C++[Error] invalid use of 'Croster::Croster'

#include <iostream>
#include<string>
using namespace std;
class Date    //日期类
{
private:
    int Date_year;    //年
    int Date_month;    //月
    int Date_day;    //日
public:
    Date(int year=2000, int month=1, int day=1);
    void show();    //以“年-月-日”格式输出年月日
    ~Date();
};
class Croster    //名单类
{
private:
    string name;
    Date birthday;
public:
    Croster();
    Croster(string name,int year,int month,int day);
    Croster(string name, Date date);
    void show();//显示姓名和出生日期
    ~Croster();
};
Date::Date(int year, int month, int day){
    cin>>Date_year;
    cin>>Date_month;
    cin>>Date_day;
}
void Date::show(){
    cout<<"Birthday: "<<Date_year<<"-"<<Date_month<<"-"<<Date_day<<endl;
}
Date::~Date(){
}
Croster::Croster(){
    cout<<"Name: "<<"NULL, "<<"Birthday: "<<"0-0-0"<<endl;
}
Croster::Croster(string name,int year,int month,int day){
    cin>>name;
    cin>>year;
    cin>>month;
    cin>>day;    
}
Croster::Croster(string name, Date date){
    cin>>name;
    date.Date();
    cout<<"Name: "<<name<<", ";
    date.show();
}
void Croster::show(){
    cout<<"Name: "<<name<<", ";
    birthday.show();
}
Croster::~Croster(){
}
int main()
{
    Croster c0,c1,c2;
    Date d;
    int a,year,month,day;
    string name;
    cin>>a;
    if(a=0)
        c0.Croster();
    else if(a=1)
        {
        c1.Croster(name,year,month,day);
        c1.show();
        }
    else if(a=2)
        c2.Croster(name,d);
    else 
        exit(0);    
    return 0;
}

    if(a=0)
        c0.Croster();
    else if(a=1)
        {
        c1.Croster(name,year,month,day);
        c1.show();
        }
    else if(a=2)
        c2.Croster(name,d);
    else 
        exit(0);    

这三句Croster的调用是有问题的,只有new的时候可以显示调用构造函数。你可以这么写

Croster c0,c1(name,year,month,day),c2(name,d);

这样会自动调用它们对应的构造函数

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632