2017-02-14 8 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

ようこそスタックオーバーフロー。 [The Tour](http://stackoverflow.com/tour)を読み、[ヘルプセンター](http://stackoverflow.com/help/asking)の資料を参考にしてください。ここに聞いてください。 –

答えて

3
IServerConnection CreateDataRequest

、およびSendはあなたがその派生クラスのインスタンスを作成する前に、あなたの派生クラスで実装しなければならないことを、pure virtual方法です。

+0

ありがとう、それは今働いた –

関連する問題