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

关于继承中初始化引用变量解决办法

2012-02-17 
关于继承中初始化引用变量各位,我有如下代码,classA{public:A(int&)protected:int&a}A::A(int&aa):a(aa

关于继承中初始化引用变量
各位,我有如下代码,

class   A
{
public:
A(int&);
protected:  
int&   a;
};

A::A(int&   aa):a(aa)   {}

class   B:   public   A
{
public:
B(int&);
};

B::B(int&   bb)   {a   =   bb;}

int   main()
{
        int   aa   =   6;
        B   BB(aa);
        return   0;
}

编译说
error   C2512:   'A '   :   no   appropriate   default   constructor   available
不知何解,请大家帮帮忙。


[解决办法]
B::B(int& bb) {a = bb;}

你没有定义默认的a构造函数,因此必须明确写上调用的是哪个a构造函数。
不然就必须加上一个a()『』;
[解决办法]
类A没有默认构造函数,
B的构造函数会调用A的构造函数来初始化类A的数据成员。
你在B的构造函数中没有调用,会默认调用A的默认构造函数,
但你又没有A的默认构造函数,所以出错

1.添加A默认构造函数
2.改成形如 B(int&):A(int&) { }

[解决办法]
B::B(int& bb) : A(bb) {}
[解决办法]
前面的几位仁兄都已经说得很明白了,我来总结一下:
1. 引用只能在初始化列表中初始化,所以在构造函数的时候就必须初始化成员变量a
2. B::B(int& bb) : A(bb) {} 这样就不会有错了.

热点排行