包装器无法实例化抽象类 我为C++中的类库创建了包装器,当我构建包装器时,我得到如下错误 包装器无法实例化抽象类。

包装器无法实例化抽象类 我为C++中的类库创建了包装器,当我构建包装器时,我得到如下错误 包装器无法实例化抽象类。,c++,wrapper,C++,Wrapper,其中,在Wrapper.cpp文件中 IWrapper *IWrapper::CreateInstance() { IWrapper *instance =(IWrapper *)new Wrapper(); return (instance); } 我在线路上得到了上面提到的错误: IWrapper *instance = (IWrapper *)new Wrapper(); 请提供解决方案并让我知道。您的IWrapper类似乎是抽象的,因此您无法实例化它 事实上,从“I”包装器的名称来看

其中,在Wrapper.cpp文件中

IWrapper *IWrapper::CreateInstance()
{
IWrapper *instance =(IWrapper *)new Wrapper();
return (instance);
}
我在线路上得到了上面提到的错误:

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

请提供解决方案并让我知道。

您的
IWrapper
类似乎是抽象的,因此您无法实例化它

事实上,从“I”包装器的名称来看,“I”通常意味着接口和接口按约定只是抽象类。[注释:C++与其他语言不同,但没有正式的含义或定义,尽管

您可能希望从iwraper继承并重写其中的所有抽象函数:

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();
}

抽象类不能被实例化。如果问题是“为什么包装器是抽象的?”那么告诉我们它的代码很可能,你的
Wrapper
没有涵盖
IWrapper
中的所有抽象方法,如果-正如我推测的那样-
Wrapper
是从
IWrapper
派生的。你不应该需要
(IWrapper*)
cast.
Wrapper无法实例化抽象类。
newwrapper()