gpt4 book ai didi

C++继承问题

转载 作者:行者123 更新时间:2023-11-30 03:10:43 25 4
gpt4 key购买 nike

我有一个 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 *

关于C++继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2923960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com