2017-02-14 93 views
0

我有這個層次結構,我試圖創建一個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

在繼承類中實現您的純虛函數(= 0)。 – Steeve

+0

你爲什麼要在基類中實例化派生類?基類不應該依賴派生類。 –

+1

歡迎來到Stack Overflow。請花些時間閱讀[The Tour](http://stackoverflow.com/tour),並參閱[幫助中心](http://stackoverflow.com/help/asking)中的資料,瞭解您可以在這裏問。 –

回答

3

IServerConnectionCreateDataRequestSendpure virtual方法,你必須在你的派生類中創建一個派生類的實例之前執行。

+0

非常感謝它現在的工作 –

相關問題