2011-09-23 94 views
0

中的參數發起類與我想要對象pq。但是pq需要用參數初始化。有沒有辦法將依賴於參數的類包含到另一個類中?在我的對象狀態,類聲明

file.h

class Pq 
{ 
    int a; 
    Pq(ClassB b); 
}; 
class State 
{ 
    ClassB b2; 
    Pq pq(b2); 
    State(ClassB b3); 
}; 

file.cc

State::State(ClassB b3) : b2(b3) {}

回答

2

您可以在初始化列表初始化它,就像你做b2

State::State(ClassB b3) : b2(b3), pq(b2) {} 

記住成員在順序進行初始化它們在頭文件宣佈,在初始化列表中初始化的不是秩序。

您需要刪除嘗試在初始化它的頭,以及:

class Pq 
{ 
    int a; 
    Pq(ClassB b); 
}; 
class State 
{ 
    ClassB b2; 
    Pq pq; 
    State(ClassB b3); 
}; 
1

 
Class State{ 
public: 
     State(ClassB& bref):b2(bref),pq(b2){} // Depends on the order you declare objects 
              // in private/public/protected 

private: 
    ClassB b2; 
    Pq pq; 

}; 

在上面的代碼,你必須保持在初始化列表的順序,否則你會得到什麼不期望...因此相當危險