为了账号安全,请及时绑定邮箱和手机立即绑定

C++构造函数问题

C++构造函数问题

C++
一只名叫tom的猫 2018-07-29 13:13:49
#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'
查看完整描述

2 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

Base没有默认构造函数

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

1Base() : k(0) {}



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

1234  Big(int n):b(Base(n)),v(n)    {    //b必须用初始化成员列表构造    }


查看完整回答
反对 回复 2018-08-04
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

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

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

1Base() : k(0) {}


查看完整回答
反对 回复 2018-08-04
  • 2 回答
  • 0 关注
  • 717 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信