不知名的网友.ᥫᩣ༠ 2024-02-29 13:08 采纳率: 95.7%
浏览 6
已结题

Vs类中构造函数报错

img


请问这是怎么回事,自己写的构造函数vs报错说缺少显式类型。。

  • 写回答

2条回答 默认 最新

  • 檀越@新空间 2024-02-29 13:08
    关注

    不知名的网友.ᥫᩣ༠ 下午好🌅🌅🌅
    本答案参考通义千问

    错误原因: 从提供的代码片段来看,setname 函数的参数 string name 后面跟了一个 this->name,这可能导致编译器认为这不是一个完整的类型声明。在 C++ 中,构造函数需要明确指定类型,特别是在类的成员变量没有默认初始化的情况下。

    解决方案:

    1. 修复构造函数: 修改 people 类的构造函数,添加 : 后跟类型的标识符,如下所示:

      class people {
      public:
          // 添加一个显式的构造函数
          people(string name = "") : name(name) {} // 假设 "name" 是一个默认可选参数
      
          // 其他方法...
      private:
          string name;
          int age;
      };
      
    2. 修复 setname 方法: 如果 setname 方法不需要接收类型,可以去掉 string 关键字,直接写 void setname(string name)。如果需要保留类型,确保在调用 this->name 之前已经正确设置了 name 的类型:

      void setname(string name) {
          this->name = name;
      }
      

    总结:

    • 添加显式类型的构造函数 people(string name = "")
    • setname 方法中,确保正确使用 name 参数并设置 this->name
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

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