c++ - 确保派生类具有适当类型的属性

标签 c++ abstract-class derived-class

我有一个抽象基类(其中只有数据成员和纯虚函数),例如“Plotter”类。

我有两个计划派生的实现,“NumberPlotter”和“WordPlotter”,除了 NumberPlotter 有一个名为“processor”的成员变量,它是“NumberProcessor”类型,而 WordPlotter 有一个名为“processor”的成员变量,类型为“WordProcessor”。这两个 *Processor 类都是抽象基类“Processor”的实现。

有没有办法确保 *Plotter 类有一个名为“processor”的成员变量,在编译时通过它们的抽象基类具有 *Processor 的某种实现类型?我不能声明 Plotter 类有一个 Processor 类型的变量,因为 Processor 只有纯虚函数(它是一个抽象类型)。

Processor 实现有一些相同的成员变量,因此我希望能够在以 Plotter->Processor-> 或什至 Plotter->Processor- 的形式使用基本 Plotter 类时做出一些基本假设>进程()。

最佳答案

您这样做的方法是定义一个抽象函数,例如:

WordProcessor &getProcessor () = 0 ;

你不能真正强制一个子类有一个成员变量,但你可以强制它有一个依赖于这样一个成员变量的成员函数。

关于c++ - 确保派生类具有适当类型的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48293630/

相关文章:

c++ - Xcode 8.3 : Run target with input from file

c++ - 向 vector 中插入数据时多次调用复制构造函数

c# - 类实现抽象类的通用类型约束

c++ - 多态性和派生类

c++ - Visual Studio 中的 Cygwin

c++ - 避免与 Bullet 发生地面碰撞

Python抽象调用基类中导入的库的正确方法

java - 但我确实重写了那个抽象方法

c++ - 添加虚拟删除错误 : type 'base' is not a direct base of derived class

没有类型转换的模板化派生类的 C++ 访问成员