求助!自学C++写代码找不到错误

#include
#include
class Base{
public:
int k;
Base(int n):k(n){};
};
class Big{
public:
int v;Base b;
Big(int n):v(n),b(n){};
Big(const Big & bi){
v=bi.v;
b.k=bi.b.k;
}
};
int main(){
Big a1(5);Big a2=a1;
printf("%d,%d",a1.v,a1.b.k);
printf("%d,%d",a2.v,a2.b.k);
system("pause");
return 0;
}
说是类Base 没有合适的默认构造函数可用

 class Base
{
public:
    int k;
    Base(int n):k(n){};
};

class Big
{
public:
    int v;
    Base b;
    Big(int n):v(n),b(n){};
    Big(const Big & bi):v(bi.v),b(bi.v)
    {
        v=bi.v;
        b.k=bi.b.k;
    }
};
int main()
{
    Big a1(5);Big a2=a1;
    printf("%d,%d",a1.v,a1.b.k);
    printf("%d,%d",a2.v,a2.b.k);
    system("pause");
    return 0;
}

你在Big(const Big & bi){ 这里没有对 b 进行带参数的显式构造啊,而自动的隐式构造又缺少无参数的 Base(){} 定义。

要用初始化列表,做如下修改试试:
Big(const Big & bi):b(bi.b){
v=bi.v;

}