' A' :没有合适的默认构造函数

时间:2015-09-03 13:57:21

标签: c++

我在跟踪以下代码中的错误时遇到了一些麻烦。我已经运行它并且说'' A' A' :没有合适的默认构造函数"。究竟是没有参数调用的构造函数?

#include<iostream>
using namespace std;
class A
{
    int x;
public: A(int i) : x(i){}
        int get_x() const { return x; }
};

class B : public A
{
    int *y;
public: B(int i) :A(i){
    y = new int[i];
    for (int j = 0; j < i; j++) y[j] = 1;
    }
        B(B&);
        int &operator[](int i) { return y[i]; }
};

B::B(B& a)
{
    y = new int[a.get_x()];
    for (int i = 0; i < a.get_x(); i++) y[i] = a[i];
}

ostream& operator<<(ostream &o, B a)
{
    for (int i = 0; i < a.get_x(); i++)
        o << a[i];
    return o;
}

int main()
{
    B b(5);
    cout << b;
    return 0;
}

1 个答案:

答案 0 :(得分:1)

B::B(B& a)

是构造函数。由于它是构造函数,因此需要构造A的{​​{1}}部分,因为B没有默认构造函数。我相信你打算制作一个复制构造函数,如果是这样的话,那就是:

A