C++类void成员函数setAlumnos变量未定义问题求助
代码问题分析与修正
核心错误:参数定义语法错误
你遇到的_matricula未定义错误,根源是setAlumnos函数的参数声明写错了——参数类型和变量名之间没有空格。比如string_matricula会被编译器识别成一个完整的变量名,而不是string类型的_matricula参数。后面赋值时用_matricula自然会提示未定义。
正确的参数声明应该是类型和变量名分开,比如:
void Alumnos::setAlumnos(string _matricula, string _nombre, int _edad, string _carrera)
其他需要修正的问题
- main函数返回类型错误:C++标准规定
main函数必须返回int,不能是string。 - 字符串字面量未加引号:调用
setAlumnos时传入的A01643364、Sebastian、ITC都是字符串,必须用双引号包裹,否则编译器会把它们当作未定义的变量。 - 类型不匹配:
alumnoEdad被定义为string类型,但getAlumnoEdad返回的是int,直接赋值会导致类型转换错误,应将alumnoEdad改为int类型。 - 缺少
头文件 :使用std::string需要包含<string>头文件,仅包含<iostream>可能导致编译错误。 - 输出字符串拼写与格式问题:"almuno"拼写错误应为"alumno",且输出语句中缺少必要空格,会导致文本拼接混乱。
修正后的完整代码
#include <iostream> #include <string> // 新增string头文件 using namespace std; class Alumnos{ private: string matricula; string nombre; int edad; string carrera; public: Alumnos(); void setAlumnos(string, string, int, string); string getAlumnoMatricula(); string getAlumnoNombre(); int getAlumnoEdad(); string getAlumnoCarrera(); }; Alumnos::Alumnos(){} // 修正参数类型与变量名的空格 void Alumnos::setAlumnos(string _matricula, string _nombre, int _edad, string _carrera){ matricula = _matricula; nombre = _nombre; edad = _edad; carrera = _carrera; } string Alumnos::getAlumnoMatricula(){ return matricula; } string Alumnos::getAlumnoNombre(){ return nombre; } int Alumnos::getAlumnoEdad(){ return edad; } string Alumnos::getAlumnoCarrera(){ return carrera; } // 修正main返回类型为int int main(){ string alumnoMatricula, alumnoNombre, alumnoCarrera; int alumnoEdad; // 修正类型为int Alumnos cl; // 字符串参数加双引号 cl.setAlumnos("A01643364", "Sebastian", 18, "ITC"); alumnoMatricula = cl.getAlumnoMatricula(); alumnoNombre = cl.getAlumnoNombre(); alumnoEdad = cl.getAlumnoEdad(); alumnoCarrera = cl.getAlumnoCarrera(); // 修正拼写与空格 cout << "La matricula del alumno es: " << alumnoMatricula << ", su nombre es " << alumnoNombre << ", su edad es " << alumnoEdad << " y su carrera es: " << alumnoCarrera << endl; return 0; // main函数返回0表示正常结束 }
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

