读书人

这个enum没有任何意义吧?解决方案

发布时间: 2012-03-11 18:15:39 作者: rapoo

这个enum没有任何意义吧?
现有程序如下:


----------------------
class CIRInfoStore
{
public:
// Constants
enum
{
NULL_STATUS_SET=0x00000000, OCR_OPEN_SET=0x00000001,};

public:
CIRInfoStore();
~CIRInfoStore();
...........
----------------------------------------------------


这个enum我没有办法在我的程序里用到吧? 除非我这样写:
----------------------------------
enum
{
NULL_STATUS_SET=0x00000000, OCR_OPEN_SET=0x00000001,}a , b;
----------------------------------


或写成:
------------------------------------
enum A
{
NULL_STATUS_SET=0x00000000, OCR_OPEN_SET=0x00000001,};
------------------------------------

我才可能在将来的程序中,用到这个enum吧?

我分析的对吗?



[解决办法]
但你可以直接用那个常量。比如赋给一个整数:
int set_type = NULL_STATUS_SET;

出现这种东西最主要的原因是以前的某些编译器(比如VC6.0),不技持在类中直接定义常量。
要是换成VC2003或更高的话,也就不用这么弊脚了,直接:

class CIRInfoStore
{
public:
static const int NULL_STATUS_SET=0x00000000;static const int OCR_OPEN_SET=0x00000001;
……

OK。
[解决办法]
楼上正解
[解决办法]
谁说没办法用到的?
例:
class Demo
{
public:
enum
{
DEMO_ENUM0 = 0x0,
DEMO_ENUM1 = 0x1,
};
};

int main(int argc, char **argv)
{
UINT u = DEMO::DEMO_ENUM0;
}
[解决办法]
enum 的最常用技巧,
就是用 enum 定义常量,
方式就是楼主你所列的那样 ~
[解决办法]
也可以在standard c++中用
[解决办法]
标准是接受的。
其实从C语言,enum成员就一直都是可以直接引用,而不用类型名来修饰的呀。
[解决办法]
就是定义const int类型的变量了。
[解决办法]
楼主的想法不对。
enum
{
NULL_STATUS_SET=0x00000000, OCR_OPEN_SET=0x00000001,};
这种没有名字的enum定义,只会对定义此enum类型的变量产生影响(只能在定义类型时一同定义变量),但是enum中的“枚举常量”(即NULL_STATUS_SET和OCR_OPEN_SET)仍然是直接可用的,即enum类型定义并没有引入新的“局部域”,因此NULL_STATUS_SET和OCR_OPEN_SET就好像是在外层域定义的整型常量一样,可以被程序取用。
[解决办法]
class CIRInfoStore
{
public:
static const int NULL_STATUS_SET=0x00000000;static const int OCR_OPEN_SET=0x00000001;
……
------
这个没注意过, 学习..

读书人网 >C++

热点推荐