C++ 不允许使用抽象类的对象
我有这个层次结构,我正在尝试创建IServer连接。但它说抽象类的对象是不允许的 下面是类和错误代码注释C++ 不允许使用抽象类的对象,c++,oop,C++,Oop,我有这个层次结构,我正在尝试创建IServer连接。但它说抽象类的对象是不允许的 下面是类和错误代码注释 struct IServerConnection : public CImplRingRefPtr<IServerConnection>, virtual public IRefPtr { virtual IServerData* CreateData(void) = 0; virtual IServerData*
struct IServerConnection : public CImplRingRefPtr<IServerConnection>, virtual public IRefPtr
{
virtual IServerData* CreateData(void) = 0;
virtual IServerData* Request(void) = 0;
virtual int Send(const IServerData *data) = 0;
};
struct ImplWFSConnection : public S3W::IServerConnection
{
private:
OGRDataSource *m_wfs_t;
public:
ImplWFSConnection() {}
~ImplWFSConnection() { OGRDataSource::DestroyDataSource(m_wfs_t); }
void Open(const char * url);
bool QueryLayer(const char* layer);
int Write(S3W::IWFSData *data);
S3W::CRefPtr<S3W::IWFSData> Read(void);
};
S3W::IServerConnection* ImplMapServer::OpenWFSConnection(const char *url)
{
if (!m_url)
{
return nullptr;
}
else
// connection_ptr->Open(m_url);
return new ImplWFSConnection(); /error
}
struct-IServerConnection:public-CImplRingRefPtr,virtual-public-IRefPtr
{
虚拟IServerData*CreateData(void)=0;
虚拟ISERDATA*请求(无效)=0;
虚拟整数发送(const-iserverata*data)=0;
};
结构ImplWFSConnection:public S3W::IServerConnection
{
私人:
OGRDataSource*m_wfs_t;
公众:
ImplWFSConnection(){}
~ImplWFSConnection(){OGRDataSource::DestroyDataSource(m_wfs_t);}
无效打开(常量字符*url);
布尔查询层(常量字符*层);
int写入(S3W::IWFSData*数据);
S3W::CRefPtr读取(无效);
};
S3W::IServerConnection*ImplMapServer::OpenWFSConnection(const char*url)
{
如果(!m_url)
{
返回空ptr;
}
其他的
//连接\u ptr->打开(m\u url);
返回新的ImplWFSConnection();/error
}
在IServerConnection
CreateData
中,请求
和发送
都是方法,在创建派生类的实例之前必须在派生类中实现。在IServerConnection
创建数据
,请求
和发送
都是方法,在创建派生类的实例之前,必须在派生类中实现。在继承类中实现纯虚拟(=0)函数。为什么要在基类中实例化派生类?基类不应依赖于派生类。欢迎使用堆栈溢出。请花点时间阅读并参考“您可以在这里询问什么和如何提问”中的材料。抽象类不是用来实例化的。因此名称“Abstract”在继承类中实现纯虚拟(=0)函数。为什么要在基类中实例化派生类?基类不应依赖于派生类。欢迎使用堆栈溢出。请花点时间阅读并参考“您可以在这里询问什么和如何提问”中的材料。抽象类不是用来实例化的。因此被称为“抽象”