选择类对象字段的构造函数

时间:2014-09-06 03:58:41

标签: c++ object constructor

我有一个名为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);
}

2 个答案:

答案 0 :(得分:2)

如此接近。

Foo::Foo()
  : bar(1)
{}

您还需要在类Foo()的定义中声明构造函数Foo(并且所有类定义最后都需要; )。

答案 1 :(得分:1)

你看起来几乎不错 - 但是你需要调用构造函数,而不是参数或变量名。

更改为:

:bar(Bar(1)) {

注意大写字母B.