2017-08-03 86 views
0

我有一些看起来像这样:如何从外部类构造成员类对象(C++)

class Foo 
{ 
    public: 
     Foo(parameter); 
} 

class Bar 
{ 
    Foo fooObject; 
} 

Bar::fooObject(data); 

,但我得到:

error: expected constructor, destructor, or type conversion before '(' token

所以我的问题是:我该如何构建来自外部Bar的fooObject?

+1

它需要是静态的,并且定义需要一个类型。 – Dan

+5

你没有。你为什么想要? – molbdnilo

+3

听起来像是你可以使用[好C++的书(http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) – NathanOliver

回答

1

你可以有一个构造函数,利用Foo实例从类之外,然后你可以复制或移动实例到你的成员变量。另一种方法是采取必要的参数来构造Foo的实例,然后使用成员初始值设定项列表构造成员变量。

class Bar 
{ 
public: 
    Bar(const Foo& foo) // Copy 
     : fooObject(foo) 
    { 
    } 

    Bar(Foo&& foo) // Move 
     : fooObject(std::move(foo)) 
    { 
    } 

    Bar(int example) 
     : fooObject(example) 
    { 
    } 

private: 
    Foo fooObject; 
} 
1
使用构造函数和成员初始化列表

初始化成员:

class Foo{ 
public: 
    Foo(int x); 
}; 

class Bar{ 
public: 
    Bar(int param); 
private: 
    Foo fooObject; 
}; 

Bar::Bar(int param) : fooObject(param){}; 

如果你指的是类的成员函数的定义,那么你可以使用下面的语法,进入一类的源(.cpp)文件:

Bar::Bar(int param) : fooObject(param){}; // ctor definition outside the class 

声明可以放在头文件中。