1

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

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;
 };

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

4

2 回答 2

2

使用初始化器:

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

不过,这条线在技术上是行不通的,因为 B 的构造函数需要一个A&,所以你不能将临时绑定到它。const A &如果它没有被改变,或者A如果它被改变了,如果你没有一个非临时A的通过会更好。

于 2012-10-03T04:52:52.803 回答
1

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

class C {
    public:
        C(int x, int y, A& a, std::string s) : b_obj(x, y, a, s) {}
于 2012-10-03T04:54:40.353 回答