中的參數發起類與我想要對象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) {}
中的參數發起類與我想要對象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) {}
您可以在初始化列表初始化它,就像你做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);
};
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;
};
在上面的代碼,你必須保持在初始化列表的順序,否則你會得到什麼不期望...因此相當危險