注册 登录
编程论坛 C++教室

C++程序编译错误,能帮忙看看吗?

全世界安静 发布于 2012-07-18 13:34, 680 次点击
#include <iostream>
using namespace std;
class A{
    int a,b;
public:
    A(int x,int y){
        a=x;
        b=y;
    }
};
class B:public A{

};
class C:public B{
public:
    C(int x,int y):A(x,y){
    }
};

int main(){
    C c(1,2);
    return 0;
}
rror C2512: 'B' : no appropriate default constructor available
4 回复
#2
rjsp2012-07-18 14:12
说得很清楚了
#3
全世界安静2012-07-18 14:21
个人理解:构造C类时,首先要调用B类的构造函数,而构造B类,首先要调用A类的构造函数,因为缺少A类构造函数需要的两个参数,B类无法构造,所以提示B类构造不成功。
程序改为:
#include <iostream>
using namespace std;
class A{
    int a,b;
public:
    A(int x,int y){
        a=x;
        b=y;
    }
};
class B:public A{
public:
   B(int x,int y):A(x,y){
    }
};
class C:public B{
public:
    C(int x,int y):B(x,y){
    }
};

int main(){
    C c(1,2);
    return 0;
}
OK了!
#4
xunmi_19932012-07-23 15:16
楼上说的有道理。。。
#5
pangding2012-07-23 23:32
发现问题之后应该先试试自己想想看。不要刚一有问题就问,尤其有些问题的答案可能非常明显。
1