我有两个类 Bar 和 Foo
class Bar
{
Foo attr;
public:
Bar(int i);
}
class Foo
{
std::string _name;
public:
Foo(std::string name) : _name(name){}
}
问题是 Foo
没有默认构造函数,只有一个采用 std::string
的构造函数.此外operator=
是 Foo 的私有(private)成员。那么我该如何初始化 attr
这样它的名字就是"good"
如果i==0
和 "bad"
否则。
最佳答案
使用构造函数初始化列表:
class Bar
{
public:
Bar(int i) : attr(i == 0 ? "good" : "bad") {}
private:
Foo attr;
};
您可能还应该使 Bar
构造函数显式
,这样随机整数就不会在您的代码中意外地被解释为 Bar
。
关于c++ - 类初始化 - 属性没有默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32820627/