friend

Базовый класс будем называть класс (Cl1), к приватным переменным которого нужно получить доступ.

Чтобы получить доступ извне к закрытым членам базового класса можно объявить в базовом классе friend class Cl2 потомка, доступ которому нужен.

class Cl1
{
public:

    friend class Cl2;

    Cl1();

private:

    QString prvt_str1;

};

Но фишка в том , что friend надо прописывать в заголовочном файле базового класса Cl1 (что вообще-то логично), доступ к членам которого надо получить извне. То есть все-равно сначала надо править заголовочный файл базового класса cl1.h, доступ к которому закрыт (хотя заголовки идут обычно всегда открыто - правь на здоровье).

Ниже можно скачать демо проект, когда Cl1 и Cl2 не связаны наследованием (то есть самостоятельные)

Другой вариант, когда Cl2 является наследником класса Cl1 и мы хотим получить доступ к приватным данным класса Cl1.

В этом случаем, чтобы получить доступ к приватной переменной класса Cl1 из наследника Cl2 достаточно обращаться к ней из приватной функции Cl2. Но в классе Cl1 сентенция friend class Cl2; остается обязательной.

Файлы для скачивания