1

私には 3 つのクラスがあります。それらの関数定義は別のファイルにあります。インライン実装を使用せずに、別のクラス内にさまざまなパラメーターを持つオブジェクトを構築しようとしています。

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 に答える