You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 16:50:29