wlsk888 2023-02-22 11:45 采纳率: 90.9%
浏览 14
已结题

这个构造函数哪里错了?怎么改?

自定义了一个结构体,调用出现错误:没有合适的构造函数??

struct stru_pack_data                  //自定义包结构
{
    string Myip;
    string Mymac;
    string MyGw;
    string Sip; 
    string Dip; 
    string Smac; 
    string Dmac; 
    string type_data;
    int Send_Port; 
    int Recv_Port;
    int ipMess_type; 
    int Ethernet_type; 
    stru_pack_data(string _Myip, string _Mymac, string _MyGw)// 构造函数
    {
        Myip = _Myip;
        Mymac = _Mymac;
        MyGw = _MyGw;
        Sip = "255.255.255.255";
        Dip = _Myip;
        Smac = "FFFFFFFFFFFF";
        Dmac = _Mymac;
        Send_Port = 67;
        Recv_Port = 5361;
        ipMess_type = 17;
        Ethernet_type = 8;
        type_data = "Release";
    }
}srpcdt,SRPCDT;
int  main()
{
    string data;
    srpcdt = stru_pack_data("192.168.31.188", "F0DEF1DFF5E9", "192.168.31.1"); //错误:stru_pack_data没有合适的构造函数
   cout << srpcdt.Myip << endl;
    return 0;
}
  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2023-02-22 11:55
    关注

    30行你定义了srpcdt,SRPCDT这两个结构体变量,会调用默认的无参构造函数。但由于结构体你新增了有参构造函数,那么你必须手工增加一个无参构造函数
    规则:当结构体或类中没有任何构造函数时,默认的无参构造函数是有效的。但当你增加了有参构造函数后,默认的无参构造函数是无效的。当你仍旧要用无参构造函数时,就必须手工增加无参构造函数。
    所以只需要增加:
    stru_pack_data() {}
    就可以了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月22日
  • 创建了问题 2月22日