踏雪失踪 发表于 2022-5-12 11:08:30

在类中有一个枚举类型变量,如何让此变量有默认值

在类中有一个枚举类型变量,如何让此变量有默认值

如果创建一个类,不给此变量值,默认是负多少多少,我想让它默认是0,请问如何解决
以下是类的代码

#pragma once
#include <iostream>
#include <string>

using namespace std;

enum ESex
{
        ESex_Null,
        ESex_FMale,
        ESex_Male,
};

class CStudent
{
public:
        string name;
        int num;
        ESex sex ;
        int age;
};


以下是主程序代码
#include <iostream>
#include <string>
#include "Student.h"

using namespace std;

int main()
{
        CStudent stu_1;
        stu_1.sex = ESex_Male;
        cout << stu_1.sex << endl;

        CStudent stu_2 = {"zhangsan", 1002, ESex_FMale, 23};
        cout << stu_2.sex << endl;

        CStudent stu_3;
        cout << stu_3.sex << endl;

        return 0;
}

Twilight6 发表于 2022-5-12 11:31:08


应该可以直接在定义类的时候赋予默认值 ESex_Null 吧?

#pragma once
#include <iostream>
#include <string>

using namespace std;

enum ESex
{
      ESex_Null,
      ESex_FMale,
      ESex_Male,
};

class CStudent
{
public:
      string name;
      int num;
      ESex sex = ESex_Null;
      int age;
};

踏雪失踪 发表于 2022-5-12 11:51:57

Twilight6 发表于 2022-5-12 11:31
应该可以直接在定义类的时候赋予默认值 ESex_Null 吧?

傻眼貓咪 发表于 2022-5-12 12:11:35

这跟枚举无关,报错已经说明你没有相应的构造函数

jhq999 发表于 2022-5-12 12:30:02

用构造函数初始化,

踏雪失踪 发表于 2022-5-12 14:05:03

傻眼貓咪 发表于 2022-5-12 12:11
这跟枚举无关,报错已经说明你没有相应的构造函数

那怎么解决呢

踏雪失踪 发表于 2022-5-12 14:25:37

jhq999 发表于 2022-5-12 12:30
用构造函数初始化,

构造函数也不行,也报错

jhq999 发表于 2022-5-12 14:32:10

踏雪失踪 发表于 2022-5-12 14:25
构造函数也不行,也报错

class CStudent
{
public:
          
      string name;
      int num;
      ESex sex;
      int age;
        CStudent()
        {
                sex=ESex_Null;
        }
        CStudent(string n,
      int nm,
      ESex s,
      int a)
        {
                name=n;
                num=nm;
                sex=s;
                age=a;
        }
};

int main()
{
      CStudent stu_1;
      stu_1.sex = ESex_Male;
      cout << stu_1.sex << endl;

        CStudent stu_2 ("zhangsan", 1002, ESex_FMale, 23);
      cout << stu_2.sex << endl;

      CStudent stu_3;
      cout << stu_3.sex << endl;

      return 0;
}

踏雪失踪 发表于 2022-5-12 15:43:10

jhq999 发表于 2022-5-12 14:32


的确可以了,一开始我只写了一个没参的构造函数,还是报错,按照你的代码,把全参的构造函数写上就不报错了。是为什么啊

jhq999 发表于 2022-5-12 16:02:35

踏雪失踪 发表于 2022-5-12 15:43
的确可以了,一开始我只写了一个没参的构造函数,还是报错,按照你的代码,把全参的构造函数写上就不报错 ...

CStudent stu_2 = {"zhangsan", 1002, ESex_FMale, 23};//////有构造函数以后就不能这么初始化了

踏雪失踪 发表于 2022-5-12 18:35:11

jhq999 发表于 2022-5-12 16:02


谢谢解答
页: [1]
查看完整版本: 在类中有一个枚举类型变量,如何让此变量有默认值