打印

构造函数问题

[复制链接]
757|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
baidudz|  楼主 | 2013-9-28 16:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个构造函数怎么错了?
#include <iostream>
using namespace std;

class Base{
public:
    Base(){}
    Base(Base* p):Root(p){}   
    virtual void* CreateRoot(void* data)=0;   
    virtual void* CreateLeft(void* data)=0;
    virtual void* CreateRight(void* data)=0;   
    Base* Root;
};

class Example:public Base{
public:
    Example(){}
    Example(void* ObjTempT=NULL):Left(NULL),Right(NULL),ObjTemp(ObjTempT),Base(NULL){}   
    Example* Left;
    Example* Right;
    void* ObjTemp;
};


int main(){   

    Base* execute = new Example;
    Example obj;
    return 0;
}

相关帖子

沙发
秋天落叶| | 2013-9-28 16:23 | 只看该作者
“Example”: 指定了多个默认构造函数
“Example”: 不能实例化抽象类
“Example::Example”: 对重载函数的调用不明确


你得 CreateRoot 把这些纯虚函数实现了
Example(void* ObjTempT=NULL) --> Example(void* ObjTempT)

使用特权

评论回复
板凳
gxgclg| | 2013-9-28 16:34 | 只看该作者
Example没有实现三个纯虚函数,所以仍然是抽象类,不能实例化。另,有个注意点,Example(){}这个构造函数多余。

使用特权

评论回复
地板
无冕之王| | 2013-9-28 16:46 | 只看该作者
带有纯虚函数的基类不能实例化
所以Base* execute = new Example;会编译报错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

239

主题

2284

帖子

0

粉丝