我想创建一个名为“Node”的空基类,然后让其他类派生自此,例如“DecisionNode”和“Leaf”。这样做是有意义的,因此我可以利用多态性将这些不同类型的节点传递给方法,而无需在编译时知道将传递给方法的内容,但是每个派生类不共享任何状态或方法。
我认为实现这一点的最佳方法是使构造函数成为纯虚拟的,而不在基类中创建额外的纯虚方法,这会增加混乱。因此,在该类的头文件“Node.h”中,我写道:
class Node {
private:
virtual Node();
};
在“Node.cpp”中我写道:
#include "Node.h"
virtual Node::Node() = 0;
此实现防止 Node 被另一个类实例化,因为唯一的构造函数是私有的,并且使用纯虚拟说明符来指示该类是抽象的。但是,这会产生编译器错误:
Node.h:6:21: error: return type specification for constructor invalid
Node.h:6:21: error: constructors cannot be declared virtual [-fpermissive]
我的问题是:有没有一种巧妙的方法来制作一个空的抽象基类?