C++构造函数问题

#include<iostream>usingnamespacestd;classBase{public:intk;Base(intn):k(n){}};classBig... #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'
展开
 我来答
zjnny
推荐于2016-10-05 · TA获得超过2037个赞
知道小有建树答主
回答量:1055
采纳率:100%
帮助的人:1067万
展开全部

Base没有默认构造函数

 1.如果按照现在Big构造过程,Base需要调用默认构造参数,修改方法添加默认构造:

Base() : k(0) {}


 2.如果不想给Base添加默认构造,你应该改写Big的构造函数,使用初始化成员列表

  Big(int n):b(Base(n)),v(n)
    {
    //b必须用初始化成员列表构造
    }
lifejackenYuan
2015-09-11 · 超过29用户采纳过TA的回答
知道答主
回答量:43
采纳率:100%
帮助的人:46.2万
展开全部

Base类的默认构造函数找不到。

原因是你写了带1个参数的构造函数后,C++将不再给你提供默认的构造函数。所以你要手动写上。

Base() : k(0) {}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式