
请问这是怎么回事,自己写的构造函数vs报错说缺少显式类型。。
不知名的网友.ᥫᩣ༠ 下午好🌅🌅🌅
本答案参考通义千问
错误原因: 从提供的代码片段来看,setname 函数的参数 string name 后面跟了一个 this->name,这可能导致编译器认为这不是一个完整的类型声明。在 C++ 中,构造函数需要明确指定类型,特别是在类的成员变量没有默认初始化的情况下。
解决方案:
修复构造函数:
修改 people 类的构造函数,添加 : 后跟类型的标识符,如下所示:
class people {
public:
// 添加一个显式的构造函数
people(string name = "") : name(name) {} // 假设 "name" 是一个默认可选参数
// 其他方法...
private:
string name;
int age;
};
修复 setname 方法:
如果 setname 方法不需要接收类型,可以去掉 string 关键字,直接写 void setname(string name)。如果需要保留类型,确保在调用 this->name 之前已经正确设置了 name 的类型:
void setname(string name) {
this->name = name;
}
总结:
people(string name = "")setname 方法中,确保正确使用 name 参数并设置 this->name