中的参数发起类与我想要对象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;
};
在上面的代码,你必须保持在初始化列表的顺序,否则你会得到什么不期望...因此相当危险