#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貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
Base沒(méi)有默認(rèn)構(gòu)造函數(shù)
1.如果按照現(xiàn)在Big構(gòu)造過(guò)程,Base需要調(diào)用默認(rèn)構(gòu)造參數(shù),修改方法添加默認(rèn)構(gòu)造:
1 | Base() : k(0) {} |
2.如果不想給Base添加默認(rèn)構(gòu)造,你應(yīng)該改寫(xiě)B(tài)ig的構(gòu)造函數(shù),使用初始化成員列表
1234 | Big( int n):b(Base(n)),v(n) { //b必須用初始化成員列表構(gòu)造 } |

慕娘9325324
TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
Base類(lèi)的默認(rèn)構(gòu)造函數(shù)找不到。
原因是你寫(xiě)了帶1個(gè)參數(shù)的構(gòu)造函數(shù)后,C++將不再給你提供默認(rèn)的構(gòu)造函數(shù)。所以你要手動(dòng)寫(xiě)上。
1 | Base() : k(0) {} |
- 2 回答
- 0 關(guān)注
- 769 瀏覽
添加回答
舉報(bào)
0/150
提交
取消