2009-05-03 5 views
3

Я пытаюсь сделать вызов метода класса родителя из содержащегося объекта, но вам не повезло со следующим кодом. Каков стандартный способ сделать это?C++ как вызвать метод родительского класса из содержащегося класса?

Я искал вокруг, и это, похоже, работает для унаследованных объектов, но не для содержащихся объектов. Правильно ли это назвать родительским классом? Или это называется классом владельца?

class Parent{ 
private: 
    Child mychild; 

public: 
    void doSomething(); 
} 

class Child{ 
public: 
    void doOtherThing(); 
} 

void Child::doOtherThing(){ 
    Parent::doSomething(); 
} 

ответ

10

Объект, содержащийся в объекте, не имеет специального доступа к классу, который его содержит, и в целом не знает, что он содержится. Вы должны передать ссылку или указатель содержащего класса каким-то образом - например:

class Child{ 
public: 
    void doOtherThing(Parent & p); 
}; 

void Child::doOtherThing(Parent & p){ 
    p.doSomething(); 
} 
0

Если ребенок должен взаимодействовать с родителем, то она будет нужна ссылка на этот объект; в настоящее время у ребенка нет понятия владельца.

1

Ребенок не имеет никакого отношения к родительскому классу. Вы должны будете передать «это» до ребенка (возможно, в конструкторах), чтобы сделать эту работу.

Смежные вопросы