鱼C论坛

 找回密码
 立即注册
查看: 1858|回复: 10

[已解决]在类中有一个枚举类型变量,如何让此变量有默认值

[复制链接]
发表于 2022-5-12 11:08:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

如果创建一个类,不给此变量值,默认是负多少多少,我想让它默认是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;
}
最佳答案
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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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;
};
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-12 11:51:57 | 显示全部楼层
Twilight6 发表于 2022-5-12 11:31
应该可以直接在定义类的时候赋予默认值 ESex_Null 吧?

微信截图_20220512115130.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-12 12:11:35 From FishC Mobile | 显示全部楼层
这跟枚举无关,报错已经说明你没有相应的构造函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-12 12:30:02 | 显示全部楼层
用构造函数初始化,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-12 14:05:03 | 显示全部楼层
傻眼貓咪 发表于 2022-5-12 12:11
这跟枚举无关,报错已经说明你没有相应的构造函数

那怎么解决呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-12 14:25:37 | 显示全部楼层
jhq999 发表于 2022-5-12 12:30
用构造函数初始化,

构造函数也不行,也报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-12 15:43:10 | 显示全部楼层

的确可以了,一开始我只写了一个没参的构造函数,还是报错,按照你的代码,把全参的构造函数写上就不报错了。是为什么啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-12 16:02:35 | 显示全部楼层
踏雪失踪 发表于 2022-5-12 15:43
的确可以了,一开始我只写了一个没参的构造函数,还是报错,按照你的代码,把全参的构造函数写上就不报错 ...
CStudent stu_2 = {"zhangsan", 1002, ESex_FMale, 23};//////有构造函数以后就不能这么初始化了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-12 18:35:11 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 16:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表