使用C ++中的特点库定义内涵全局矢量-英雄云拓展知识分享
253
2024-01-22
我已看到了此类问题的多个答案,但我没有解决问题。主要问题多是我正在研究他人的代码,但是嗯。这是此问题的简化示例:我有一个链接许多其他类的类:
class Interface: public system_atoms,
public system_io,
/* etc, others */
{
/* A few functions, none that matters here - none from the inherited classes redefined */
}

内部system_atoms,我有:
class system_atoms {public:
virtual int init_atom(int atom_number) = 0;
virtual int check_atom_id(int atom_number) = 0;
}
而且我有一个应当从接口继承的类:
class Interface_proxy : public Interface {public:
/* stuff - no function from the inherited classes redefined */
}
在.cpp中:
Interface_proxy global_interface_proxy;
汇编带来了一个毛病,说明没法声明变量 global_interface_proxy
是抽象类型 Interface_proxy
由于虚拟函数[system_atoms中列出的两个]是纯的".
我也没有真正精通C ++。我想我应当重新定义内涵两个虚拟函数纯净(没有 = 0
和 virtual
对吗?)在某个地方,该变量不是抽象类型的。但是我的知识停在那里 - 多元继承使我感到困惑。
一个 纯虚拟功能 是虚拟且明确没有实现的函数(用尾声表示 = 0
)。纯虚拟功能旨在强迫派生的类,以提供自己的该功能的实现。换句话说,预设派生的类终究将定义内涵其本身的行动。
一个抽象类是具有一个或多个纯虚拟函数的类,由于它最少声明一个或从一个抽象类中继承,并且不会覆盖所有继承的纯虚拟函数。由于未完全定义内涵它们的行动,因此没法实例化这些类(您没法创建它的实例)。它们只能用作其他类型的基类。
在您的情形下 system_atoms
定义内涵2个纯虚拟函数,因此这是一个抽象类。您列出的每一个类 system_atoms
也是抽象的,由于它们都从这些纯虚拟功能中继承了,并且永久不会覆盖它们。
正确的解决方案是经过覆盖为您派生类中的这些纯虚拟功能提供实现。
看到 虚拟功能 和 override
说明符。
多重继承在这里没有发挥作用,除每一个继承类可能都有自己的纯虚拟函数。只需正常覆盖纯虚拟功能便可。
免责声明:
本网址(www.yingxiongyun.com)发布的材料主要源于独立创作和网友匿名投稿。此处提供的所有信息仅供参考之用。我们致力于提供准确且可信的信息,但不对材料的完整性或真实性作出任何保证。用户应自行验证相关信息的正确性,并对其决策承担全部责任。对于由于信息的错误、不准确或遗漏所造成的任何损失,本网址不承担任何法律责任。本网站所展示的所有内容,如文字、图像、标志、音频、视频、软件和程序等的版权均属于原创作者。如果任何组织或个人认为网站内容可能侵犯其知识产权,或包含不准确之处,请即刻联系我们进行相应处理。
发表评论
暂时没有评论,来抢沙发吧~