C++构造函数问题

#include <iostream>
using namespace std;
class Base {
public:
int k;
Base(int n):k(n) { }
};
class Big {
public:
int v; Base b;
Big(int n)
{
b=Base(n);
v=n;
}
};
int main() {
Big a1(5);
return 0;
}
为什么提示no matching function for call to ‘Base::Base'

一只名叫tom的猫
浏览 718回答 2
2回答

慕码人2483693

Base没有默认构造函数&nbsp;1.如果按照现在Big构造过程,Base需要调用默认构造参数,修改方法添加默认构造:1Base()&nbsp;:&nbsp;k(0)&nbsp;{}&nbsp;2.如果不想给Base添加默认构造,你应该改写Big的构造函数,使用初始化成员列表1234&nbsp;&nbsp;Big(int&nbsp;n):b(Base(n)),v(n)&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;//b必须用初始化成员列表构造&nbsp;&nbsp;&nbsp;&nbsp;}

慕娘9325324

Base类的默认构造函数找不到。原因是你写了带1个参数的构造函数后,C++将不再给你提供默认的构造函数。所以你要手动写上。1Base()&nbsp;:&nbsp;k(0)&nbsp;{}
打开App,查看更多内容
随时随地看视频慕课网APP