不允许使用抽象类的对象

时间:2017-02-14 07:44:21

标签: c++ oop

我有这个层次结构,我正在尝试创建一个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
} 

1 个答案:

答案 0 :(得分:4)

IServerConnection CreateDataRequestSendpure virtual方法,您必须在创建该派生类的实例之前在派生类中实现这些方法