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