假设您有一个类Dep
树的基类。Dep* Dep::create()
我希望每个叶类都实现一个虚拟方法。有什么办法可以强制执行吗?
注意:这里的问题是可能有中间类(比如)偶然class B : public A : public Dep
实现了这个方法( ),或者因为他们认为它们是叶类,但实际上它们自己是子类。A::create
问题到此结束。
语境
如果你好奇我为什么需要这个;我有一个Master
具有Dep
未知具体类型的对象的类。如果Master
重复,我需要提供一个匹配的Dep
实例克隆。下一个最好的办法是虚拟构造函数,它正好引入了这个问题。
此外,我什至无法捕捉到这一点(除了可怕的崩溃),因为由于不明原因,比我有更多话要说的人已经dynamic_cast
在这个项目中取缔了(也许这是一个很好的决定;但无论如何,这是一个完全不同的讨论)。