0

我正在使用以下类声明:

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?

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

4

1 回答 1

3

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

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

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

};
于 2012-12-10T21:10:53.470 回答