Если у меня есть два класса:C++ называть частные функции в контейнерном классе
class worker
{
Top *mp_parent;
worker(Top *parent) : mp_parent(parent) {};
int doSomeWork()
{
int i = mp_parent->privateFunction(); // This is the function I want to call
}
}
class Top
{
private:
worker m_Worker;
int privateFunction() {return 1;}
}
Где Top класс содержит экземпляр класса рабочих. Когда экземпляр создается, указатель на родительский класс передается. Позже вызывается функция doSomeWork(), которая должна получать значение от родителя, поэтому она вызывает mp_parent-> privateFunction().
Каков наилучший способ достичь этого? - Я действительно не хочу делать privateFunction() публичной функцией, если я могу ее избежать, но она не работает, потому что она закрыта: o
Есть ли другие варианты?
Сделать Топ друга работника. Кроме того, сделайте работника вложенным классом в Top. –
сначала устранить круговую зависимость. –
@ KarolyHorvath да, извините, это всего лишь минимальный пример. Я не заботился о других вещах, чтобы описать проблему :) –