在头文件中定义类的枚举成员的问题

本文讲述了在C++编程时遇到的关于类中枚举成员的定义问题。当尝试在头文件中定义枚举类型作为类的成员时,遇到了编译错误。经过一系列尝试,发现枚举成员必须在头文件中直接定义才能正确编译。同时,文中还提出了一个现象,即枚举元素在类的成员中可以有两种等价的使用方式,作者期待专业人士解答这些问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 在敲c++的时候遇到一个问题:有的时候一些类需要定义枚举类型作为其成员。

看起来问题不大,但是作为初学者的我,加上自己想用多文件结构来实现,就开始发蒙了:

枚举元素本质上是常量,但是记得书上又写过,那些需要编译器分配内存的定义,不能写在头文件中!

于是写代码测试如下:

//myhead.h
class myclass {
public:
	enum myenum;
	void setcondition(myenum NewCondition);
	void setcondition();
private:
	myenum conditions;
};

//myhead.cpp
using namespace std;
enum myclass::myenum { condition1, condition2, condition3 };
void myclass::setcondition(myenum NewCondition) { conditions = NewCondition; }
void myclass::setcondition() { conditions = condition1; }

没报错,沾沾自喜。但是在主函数中调用setcondition时,出错了:

myclass myobj;
myobj.setcondition(condition1);

报错:: error C2065: “condition1”: 未声明的标识符

改成myclass::condition1,又报错: error C2039: "condition1": 不是 "myclass" 的成员

???我在myhead.cpp里定义了呀?

只好改成如下:

//myhead.h
class myclass {
pub
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值