在敲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