构造函数参数中的引用调用引用的默认构造函数

时间:2012-12-10 21:07:43

标签: c++

我正在使用以下类声明:

class A {
public:
    A(int, float);
    A(const A&);
};

class B {
public:
    B(A&);
protected:
    A a;
};

我还为B设置了以下定义:

B::B(A &a) {
    this->a = a;
}

问题是我的B构造函数定义出错,告诉我有No matching function for call to A::A()

为什么我的B构造函数会尝试创建一个新的A?

如果需要上一步,为什么不使用引用来调用复制构造函数?

1 个答案:

答案 0 :(得分:3)

我认为您的B需要构建A。在当前的构造函数中,您没有明确指定要使用的A构造函数。因此,它会尝试A的默认构造函数,它不存在:

也许你打算用参考构建B的A?

class B {
private:
    A _a;
public:
    B(A& a) : _a(a) {}

};