包装器不能实例化抽象类
Wrapper cannot instantiate an abstract class
我已经在c++中为类库创建了包装器,当我构建包装器时,我得到了以下错误Wrapper cannot instantiate an abstract class.
在Wrapper.cpp文件中
IWrapper *IWrapper::CreateInstance()
{
IWrapper *instance =(IWrapper *)new Wrapper();
return (instance);
}
我得到了上面提到的错误:
IWrapper *instance = (IWrapper *)new Wrapper();
请提供解决方案并让我知道
似乎你的IWrapper
类是抽象的,因此你不能实例化它。
事实上,从名称'I' wrapper来看,'I'通常意味着Interface和Interface按照约定只是抽象类。[注:c++与其他语言不同,没有接口的正式含义或定义]
你可能想从IWrapper继承并覆盖其中的所有抽象函数:
class IWrapper
{
public:
virtual int SomeFunc() = 0;
virtual ~IWrapper(){}
};
class MyWrapper : public IWrapper
{
public:
virtual int SomeFunc(){ return 42; }
};
,然后在CreateInstance
:
IWrapper* MyWrapper::CreateInstance()
{
return new MyWrapper();
}
相关文章:
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- C++包括类名间距和类实例化
- 如何使用其中一个具体类实例化抽象类?
- 不带尖括号的模板类实例化
- 使用父类实例化的向下转换对象
- 模板类实例化中的指针转换无效
- 类的私有成员在我的类实例化期间更改,即使他们不应该
- 反向函数不反转类实例化的引用字符串
- 在类实例化时生成一个数字
- 谷歌测试 - 为模板类实例化生成值
- 使用派生类实例化基类,而不在对象定义中使用指针
- 模板类实例化如何与类继承协同工作
- 枚举器而不是用于类实例化的构造函数
- 使用std :: make_shared抽象类实例化的错误
- 通过纯虚拟函数防止类实例化
- C 11枚举类实例化
- 阿达水果示例中的 Bizare 类实例化
- 从标头中的类实例化对象
- C++类实例化是否可以在运行时更改其大小
- 抽象类实例的动态初始化