我正在尝试从包含的对象调用Parent类方法,但是对于以下代码没有运气。这样做的标准方法是什么?
我已经搜索过,这似乎适用于继承的对象,但不适用于包含的对象。将它称为父类是否正确?或者它被称为所有者类?
class Parent{
private:
Child mychild;
public:
void doSomething();
}
class Child{
public:
void doOtherThing();
}
void Child::doOtherThing(){
Parent::doSomething();
}
答案 0 :(得分:11)
包含的对象对包含它的类没有特殊访问权限,并且通常不知道它包含它。您需要以某种方式将引用或指针传递给包含类 - 例如:
class Child{
public:
void doOtherThing( Parent & p );
};
void Child::doOtherThing( Parent & p ){
p.doSomething();
}
答案 1 :(得分:1)
孩子根本没有与父班级的联系。你必须将'this'传递给孩子(可能在构造函数中)以使其工作。
答案 2 :(得分:0)
如果孩子需要与父母互动,那么它需要对该对象的引用;目前,孩子没有主人的概念。