我在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();
请提供解决方案并告知我们。
答案 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();
}