【发布时间】:2010-09-04 18:49:56
【问题描述】:
假设我有一个类 A 和一个类 B。B 用作 A 中的成员。B 没有默认构造函数,但需要一个参数。
class B {
B(int i) {}
};
class A {
B m_B;
A()
{
m_B(17); //this gives an error
}
};
我怎样才能仍然使用 B 作为 A 中的成员?
【问题讨论】:
标签: c++
假设我有一个类 A 和一个类 B。B 用作 A 中的成员。B 没有默认构造函数,但需要一个参数。
class B {
B(int i) {}
};
class A {
B m_B;
A()
{
m_B(17); //this gives an error
}
};
我怎样才能仍然使用 B 作为 A 中的成员?
【问题讨论】:
标签: c++
使用初始化列表。
class B {
public:
B(int i) {}
};
class A {
B m_B;
public:
A() : m_B(17) {}
};
顺便说一句,要在构造函数之外的某处重置m_B,正确的语法是:
m_B = B(17);
【讨论】:
m_B = B(17) 是从A() 构造函数中调用的,那么B 的默认构造函数是否仍会被调用?如果是这样,有没有办法防止这种情况发生?
m_B。