包装器无法实例化抽象类

时间:2013-05-20 13:31:21

标签: c++ wrapper

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

Wrapper.cpp文件中的位置

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

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

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

请提供解决方案并告知我们。

1 个答案:

答案 0 :(得分:2)

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

事实上,从名称'I'Wrapper,'我'通常意味着接口和接口按照惯例只是抽象类。 [注意:虽然不像其他语言,但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();
}