2017-08-03 82 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 

聲明可以放在頭文件中。