c++中以一个类b作为另一个类a的成员变量时的问题

在a定义b的时候,b不能带参数,如
class a
{
b(1);
}
这样就会报错,只能这样定义
class a
{
b;
}
但如果b只有带参数的构造函数的时候,这样又会报错,怎么办?

class b
{
public:
b (int i) {m_i=i;}; // class b只有一个带参数的构造函数
private:
int m_i;
};
class a
{
public:
a ()
:m_b(1) // 因为b没有默认构造函数,所以必须在初始化表中初始化
{
};
b m_b;
};
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-01
一个类不能作为另一类的成员,只能将一个类的对象作为另一个类的成员。只能先定义类b,然后再定义类a,类a中将类b的一个对象变量作为其成员。
第2个回答  推荐于2017-09-16
class b
{public:
b (int i) {m_i=i;}; // class b只有一个带参数的构造函数
private:
int m_i;};
class a{
public:
a ()
:m_b(1) // 因为b没有默认构造函数,所以必须在初始化表中初始化
{
};
b m_b;};
第3个回答  2015-11-11
class b
{
public:
b (int i) {m_i=i;}; // class b只有一个带参数的构造函数
private:
int m_i;
};
class a
{
public:
a ()
:m_b(1) // 因为b没有默认构造函数,所以必须在初始化表中初始化
{
};
b m_b;
};
第4个回答  2015-11-22
class b
{
public:
b (int i) {m_i=i;}; // class b只有一个带参数的构造函数
private:
int m_i;
};
class a
{
public:
a ()
:m_b(1) // 因为b没有默认构造函数,所以必须在初始化表中初始化
{
};
b m_b;
};
相似回答