C++类中的对象构造

C++ Object Construction inside a Class

本文关键字:对象 C++      更新时间:2023-10-16

我有三个类;它们的函数定义在一个单独的文件中。我正在尝试在另一个类中使用各种参数构造一个对象,而无需使用内联实现。

class A{     
     public:
       A(){}  
};
class B{         
     public:
         //takes in two ints, one reference to object, and a string 
         B(int x, int y, A &a, std::string s );
};
class C{        
    public:            
        //in the constructor, construct b_obj with its parameters 
        C();
    private:
        B b_obj;
 };

如何使 C 构造函数构造b_obj 的参数 int、对 A 实例的引用和字符串?我尝试了一些方法,但收到一个错误,抱怨没有对b_obj构造函数的匹配调用。

使用初始值设定项:

C() : b_obj(5, 6, A(), ""){}

不过,从技术上讲,这一行不起作用,因为 B 的构造函数采用A&,因此您不能将临时绑定到它。 const A &,如果它没有被改变,或者A,如果你没有一个非临时的A可以传递,效果会更好。

您需要将相关项传递给对象 C 的构造函数,然后使用初始值设定项。

class C {
    public:
        C(int x, int y, A& a, std::string s) : b_obj(x, y, a, s) {}