【发布时间】:2023-04-04 21:25:01
【问题描述】:
我有一个关于抽象类和纯虚函数的问题,当我尝试使用一个抽象类时,我发现纯虚函数返回另一个抽象类的实例,代码是这样的:
class A{
virtual B *newB()=0;
}
B类太抽象了:
class B{
virtual void function1()=0;
virtual void function2()=0;
}
然后我有我的头文件 C.hpp,我在其中调用 A 类:
class C: A{
virtual B *newB();
}
在我的 C.cpp 文件中,我输入了我的代码:
#include "C.hpp"
B *C::newB(){
return new B;
}
它不能返回 B 的实例,因为它太抽象了。那么我该如何着手解决这个问题,我建议创建另一个继承自 B 的类并覆盖 function1 和 function2,之后我可以调用这个 new D() 而不是 new B() 你对这个解决方案有什么看法谢谢任何回应。
【问题讨论】:
-
如果没有从每个抽象类派生的具体类,您将无能为力 - 您期望什么?
标签: c++ class abstract virtual-functions