首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这个构造函数//如何错了

2013-10-01 
这个构造函数//怎么错了?#include iostreamusing namespace stdclass Base{public:Base(){}Base(Base*

这个构造函数//怎么错了?



#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;


[解决办法]
“Example”: 指定了多个默认构造函数
“Example”: 不能实例化抽象类
“Example::Example”: 对重载函数的调用不明确


你得 CreateRoot 把这些纯虚函数实现了
Example(void* ObjTempT=NULL) --> Example(void* ObjTempT)
[解决办法]
1、纯虚函数继承后是需要实现的;
2、Example(void* ObjTempT=NULL)可以缺省参数,与Example()是冲突的。


#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):Left(NULL),Right(NULL),ObjTemp(ObjTempT),Base(NULL){}    
    Example* Left;
    Example* Right;
    void* ObjTemp;
};
 
 
int main(){    
 
    Base* execute = new Example;
    Example obj;
    return 0;



引用:


#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;

热点排行