假设我有两个班级A和B。
类A是X的子类,具有称为now_do()
的虚拟方法,因此我可以轻松地用类A覆盖它。但是,大多数问题都在类B中,因此我想在类B中包含类A并覆盖now_do()
像A::now_do(){...}
一样,但是不可能,所以该怎么做才能在A::now_do(){}
中使用B类变量。
代码示例(B类):
#include "A.cpp"
class B{
public:
int a;
//....
void A::now_do(){
cout<<a<<endl; //Access a member of this class B.
}
};
//But it works when I put outside B class
//However now I can't access members of class B.
void A::now_do(){
cout<<a<<endl; //Can't access a member of this class B.
}
我得到的错误是: 您无法在B中定义成员函数A :: now_do()。
答案 0 :(得分:1)
实际上,您无法使用C ++进行尝试(我想也不能使用其他任何语言):您看到,类A和B不共享实例信息。实例化A时,没有B的关联实例,您可以从中获取a
值。您也无法将a
从B实例“粘贴”到A
实例中。
如果要关联A和B的实例,则可能需要:
有一个
class AWithB { A instance_of_A; B instance_of_B; };
(当然,这不是一个很好的选择...)
使now_do()
为AWithB
的方法,以便它可以访问特定于A
实例和B
实例的信息
另一种替代方法是让类B从A继承,然后它可以覆盖now_do()
。