我有这个层次结构,我正在尝试创建一个IServer连接。但它说不允许抽象类的对象。
这里是类,错误代码已注释。
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
}
答案 0 :(得分:4)
在IServerConnection
CreateData
,Request
和Send
是pure virtual方法,您必须在创建该派生类的实例之前在派生类中实现这些方法