我有一个C++继承相关的问题。我有一组这样的类(我没有给我完整的类结构,因为我很懒:))。我想使用com指针访问chiComponent类的公共(public)方法。我应该怎么做?
请注意,我不得不在很多地方更改“com”指向的对象。
所以我认为我不能再拥有另一个
chiComponent *ccom = <some_cast> com;
ccom.chiComponentMethod()
我应该怎么做?
class Component{
};
class chiComponent : public Component {
public:
void chiComponentMethod()
{
cout << "Hi! Chi component function called!!";
}
}
class parent {
protected:
Component *com;
};
class child : public parent{
public:
child() {
com = new chiComponent();
}
}
问候
阿伦
最佳答案
您将需要在Component
中实现纯虚拟方法;例如,componentMethod()
:virtual void componentMethod() = 0;
这会使Component
成为抽象类,因此无法实例化。
然后在chiComponent
中,您可以:
virtual void componentMethod() {
chiComponentMethod();
}
另外,您可以将
chiComponentMethod
重命名为componentMethod
并将实现直接放入其中。另外,
Component
的任何其他实现都可以实现其自己的功能。另外,我相信
com = new chiComponent();
应该
*com = new chiComponent();
因为
com
是Component *
。