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 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程