C++ 在类声明中使用参数初始化类

C++ 在类声明中使用参数初始化类,c++,class,constructor,C++,Class,Constructor,在我的对象状态中,我想要对象pq。但是pq需要用一个参数初始化。有没有办法将依赖于参数的类包含到另一个类中 文件.h file.cc State::State(classbb3):b2(b3){} 您可以在初始值设定项列表中对其进行初始化,就像使用b2一样: State::State(ClassB b3) : b2(b3), pq(b2) {} 请记住,成员是按照头文件中声明的顺序初始化的,而不是按照初始值设定项列表中初始值设定项的顺序初始化的 您还需要删除在标头中初始化它的尝试: class

在我的对象状态中,我想要对象pq。但是pq需要用一个参数初始化。有没有办法将依赖于参数的类包含到另一个类中

文件.h

file.cc

State::State(classbb3):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);
};

您可以在初始值设定项列表中对其进行初始化,就像使用
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);
};

阶级国家{ 公众: 状态(ClassB&bref):b2(bref),pq(b2){}//取决于声明对象的顺序 //私人/公共/受保护 私人: B类b2; Pq-Pq; };

在上面的代码中,您必须在初始化列表中保持该顺序,否则您将得到意想不到的结果。因此非常危险

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; }; 阶级国家{ 公众: 状态(ClassB&bref):b2(bref),pq(b2){}//取决于声明对象的顺序 //私人/公共/受保护 私人: B类b2; Pq-Pq; };

在上面的代码中,您必须在初始化列表中保持该顺序,否则您将得到出乎意料的结果。因此风险很大