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

标签 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?

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

最佳答案

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

也许您打算用引用构造 B 的 A?

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

};

关于c++ - 构造函数参数中的引用调用引用的默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13809270/

相关文章:

c++ - 将此指针作为weak_ptr传递给内部类

C++ - 调用 setter 的函数 - 如何修饰参数?

c++ - 模板类中的友元运算符<<

c++ - 这个分形的逻辑是什么?

C++11 数组初始化不会调用复制构造函数

c++ - 双向链表 2 个值 C++

c++ - 具有默认参数的模板类在另一个具有默认参数访问权限的模板类中使用

c++ - C++中字符串的加法和乘法

c++ - 在小代码中查找段错误

c++ - 在 C++ 中声明变量名称的问题