У меня следующая ситуация:
class B
{
public:
void methodInB();
};
class C
{
public:
void methodInC();
};
class A
{
public:
void methodInA();
private:
B objB;
C objC;
};
void A::methodInA()
{
objB.methodInB();
}
int main()
{
A objA;
objA.methodInA();
return 0;
}
Я хочу, чтобы я мог позвонить C::methodInC()
из B::methodInB()
, но я не уверен, каким будет путь ((не обошлось без глобалов).
Моей первой идеей было добавить указатель C* pC
в качестве члена B
, а затем из methodInB()
вызвать его как pC->methodInC
.Для этого потребуется установить указатель изнутри A
перед использованием метода (возможно, в конструкторе A
).Моя проблема в том, что мне может понадобиться вызывать другие объекты из B
, если я добавлю D
и E
объекты, и я не хочу заполнять определение класса указателями.
Есть ликакой-то другой способ сделать это?Неявная ссылка на объект, которому принадлежит объект?Вроде как this
но для родителя?Таким образом, я мог бы по крайней мере сделать parent->objC->methodInC()
?