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

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

问题描述:

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

如此接近。

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

您还需要声明构造Foo()在类Foo的定义(和所有的类定义在年底需要一个;)。

+0

我接受这个答案,因为它是第一个和它的工作。这也是一个很酷的速记方式。 – brandonto 2014-09-06 04:13:20

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

更改为:

:bar(Bar(1)) {

注资本B.

+0

这个答案也可以,也是我原本以为我必须做的。另一个答案比较短,但这对初学者来说可能更清楚(像我一样) – brandonto 2014-09-06 04:14:17