自定义结构体总是C26495错误


#include<iostream>
using namespace std;
#include<string>

//1、创建学生数据类型:学生属性包括(姓名  年龄   分数)
//自定义数据类型,一些类型集合组成的一个类型
//语法 struct 类型名称{成员列表}
struct student
{
    //成员列表

    //姓名
    string name;
    //年龄
    int age;
    //分数
    int score;
}s3;




int main()
{
    //2、通过学生类型创建具体学生
    //2.1 struct student s1;
    struct student s1;
    //给s1属性赋值,通过 . 访问结构体变量中的属性
    s1.name = "张三";
    s1.age = 19;
    s1.score = 93;

    cout << "姓名:" << s1.name
        << "\n年龄:" << s1.age
        << "\n分数:" << s1.score << endl;

    //2.2struct student s2={....}
    struct student s2 = { "李四",18,95 };
    cout << "姓名:" << s2.name
        << "\n年龄:" << s2.age
        << "\n分数:" << s2.score << endl;

    //2.3在定义结构体时顺便创建结构体变量
    s3.name = "王五";
    s3.age = 18;
    s3.score = 92;

    cout << "姓名:" << s3.name
        << "\n年龄:" << s3.age
        << "\n分数:" << s3.score << endl;


    system("pause");

    return 0;
}

在自定义结构体最后的中括号运行后报
__“C26495: 未初始化变量 student::age。始终初始化成员变量(type.6)。
C26495: 未初始化变量 student::score,始终初始化成员变量(type.6)”
怎么回事?


可以编译啊

img

【以下回答由 GPT 生成】

这个错误是由于使用了未初始化的变量导致的。在代码中,结构体的成员变量age和score没有在定义时进行初始化,所以编译器会提示该错误。

解决该问题的方式是在定义结构体时给成员变量进行初始化。你可以在定义结构体时,给成员变量指定默认值,或者使用构造函数进行初始化。

下面是两种解决方案:

解决方法一:给成员变量指定默认值

struct student
{
    string name;
    int age = 0; // 给age成员变量指定默认值为0
    int score = 0; // 给score成员变量指定默认值为0
}s3;

解决方法二:使用构造函数进行初始化

struct student
{
    string name;
    int age;
    int score;

    student() : age(0), score(0) {} // 构造函数初始化age和score成员变量为0
} s3;

这样就不会再出现C26495错误了。希望对你有帮助!如果还有其他问题,请随时提问。



【相关推荐】


  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7668190
  • 除此之外, 这篇博客: C语言基础语法(2遍)中的 5.定义结构体Student,包含成员姓名,年龄,身高,嵌套包含结构体Score,。定义结构体Score,包含成员 数学,语文,英语,三科成绩。申请结构体Student变量,对其成员赋值后打印输出至控制台。 部分也许能够解决你的问题。

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^