0

我在 C++ 中为类库创建了包装器,当我构建包装器时,出现以下错误 Wrapper cannot instantiate an abstract class.

在 Wrapper.cpp 文件中,

IWrapper *IWrapper::CreateInstance()
{
IWrapper *instance =(IWrapper *)new Wrapper();
return (instance);
}

我得到了上面提到的错误:

IWrapper *instance = (IWrapper *)new Wrapper();

请提供解决方案并告诉我。

4

1 回答 1

2

看起来你的IWrapper类是抽象的,因此你不能实例化它。

事实上,从名称“I”Wrapper 来看,“I”通常表示接口,而接口按照惯例只是抽象类。[注意: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();
}
于 2013-05-20T13:58:38.810 回答