包装器不能实例化抽象类

Wrapper cannot instantiate an abstract class

本文关键字:抽象类 实例化 不能 包装      更新时间:2023-10-16

我已经在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();
}