【问题标题】:Ensure Derived Classes have property of appropriate type确保派生类具有适当类型的属性
【发布时间】:2018-06-25 21:25:21
【问题描述】:

我有一个抽象基类(内部只有数据成员和纯虚函数),例如“绘图仪”类。

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

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

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

【问题讨论】:

  • 抽象类可以有数据成员(接口不能),所以你可以在Plotter类中添加Processor & processor;成员

标签: c++ abstract-class derived-class


【解决方案1】:

你会这样做的方式是定义一个抽象函数,如:

WordProcessor &getProcessor () = 0 ;

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

【讨论】:

  • 我明白了。我考虑过这个解决方案,现在看来这可能是实现这一目标的最佳方式。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-17
  • 1970-01-01
  • 2021-11-03
相关资源
最近更新 更多