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日

悬赏问题

  • ¥15 xshell无法连接提示ssh服务器拒绝密码
  • ¥15 AT89C52单片机C语言关于串口通信的位操作
  • ¥20 需要步骤截图(标签-服务器|关键词-map)
  • ¥50 gki vendor hook
  • ¥15 灰狼算法和蚁群算法如何结合
  • ¥15 这是一个利用ESP32自带按键和LED控制的录像代码,编译过程出现问题,请解决并且指出错误,指导如何处理 ,协助完成代码并上传代码
  • ¥20 stm32f103,hal库 hal_usart_receive函数接收不到数据。
  • ¥20 求结果和代码,sas利用OPTEX程序和D-efficiency生成正交集
  • ¥50 adb连接不到手机是怎么回事?
  • ¥20 抓取数据时发生错误: get_mooncake_data() missing 1 required positional argument: 'driver'的问题,怎么改出正确的爬虫代码?