Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 不允许使用抽象类的对象_C++_Oop - Fatal编程技术网

C++ 不允许使用抽象类的对象

C++ 不允许使用抽象类的对象,c++,oop,C++,Oop,我有这个层次结构,我正在尝试创建IServer连接。但它说抽象类的对象是不允许的 下面是类和错误代码注释 struct IServerConnection : public CImplRingRefPtr<IServerConnection>, virtual public IRefPtr { virtual IServerData* CreateData(void) = 0; virtual IServerData*

我有这个层次结构,我正在尝试创建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
} 
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)函数。为什么要在基类中实例化派生类?基类不应依赖于派生类。欢迎使用堆栈溢出。请花点时间阅读并参考“您可以在这里询问什么和如何提问”中的材料。抽象类不是用来实例化的。因此被称为“抽象”