2011-09-23 68 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; 

}; 

在上面的代码,你必须保持在初始化列表的顺序,否则你会得到什么不期望...因此相当危险