我有一个名为Foo的类,它有另一个名为Bar的类作为字段。 Bar只有一个带参数的构造函数。如何为Bar选择带参数的构造函数(不存储Bar *而不是Bar,并调用new)?
foo.h中
class Foo
{
private:
Bar bar;
};
Bar.h
class Bar
{
public:
Bar(int arbitraryArg);
};
Foo.cpp中
Foo::Foo()
: bar(bar(1))
{}
我想这样做是因为我听说将指针存储为字段通常不好,除非绝对有必要避免管理内存,所以我想避免这样的事情:
foo.h中
class Foo
{
private:
Bar* bar;
public:
Foo();
}
Foo.cpp中
Foo::Foo()
: bar(NULL)
{
bar = new Bar(1);
}
答案 0 :(得分:2)
如此接近。
Foo::Foo()
: bar(1)
{}
您还需要在类Foo()
的定义中声明构造函数Foo
(并且所有类定义最后都需要;
)。
答案 1 :(得分:1)
你看起来几乎不错 - 但是你需要调用构造函数,而不是参数或变量名。
更改为:
:bar(Bar(1)) {
注意大写字母B.