我有一个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();

因为comComponent *

07-25 20:26