2014-10-30 48 views
-2

我无法在此网站上找到相同的问题,因此询问。我想知道如何从类中声明的C文件访问枚举类型。考虑下面的例子:如何访问C文件中的C++枚举

test1.h

class abc 
{ 
    public: 
    enum mode 
    { 
     ENTER_MODE = 0, 
     EXIT_MODE = 1 
    }; 
} 

test2.h

abc::mode test_mode(); 

test2.c中

abc::mode test_mode() 
{ 
    if (some_condition) 
    { 
    return abc::ENTER_MODE; 
    } 
    else 
    { 
    return abc::EXIT_MODE; 
    } 
} 

这并不编译。任何建议?

+0

什么编译错误,你看见了什么?你在test2.h里面包含test1.h吗? – mskfisher 2014-10-30 13:05:47

+0

'test2.c'应该是'test2.cpp' - 你必须将它编译为C++,而不是C。 – 2014-10-30 13:06:25

+0

是的,我包括...编译器给出的警告与test1.cpp中包含的其他文件有关..这是奇怪的 – Mahesh 2014-10-30 13:07:21

回答

0

尽量避免使用C类。相反,只需使用结构(C++中的结构支持许多类的功能)。在这个示例代码中(不管我的假设是否错误),不需要将枚举的范围限制在一个类中。

理想情况下,您应该将它们保存为.cpp文件并编译为C++。编译错误说的是什么?

-1

结束的类定义以分号,并声明如下:

enum abc::mode test_mode(); 

尝试这一个(这个编译)OK:

class abc 
{ 
    public: 
    enum mode 
    { 
     ENTER_MODE = 0, 
     EXIT_MODE = 1 
    }; 
}; 

enum abc::mode test_mode() 
{ 
    bool some_condition=false; // or something 
    if (some_condition) 
    { 
    return abc::ENTER_MODE; 
    } 
    return abc::EXIT_MODE; 
} 
+0

-1,不是答案。 C没有'::'运算符。 – 2014-10-30 13:37:04

+0

@JensGustedt但是使用了类,你的意思是C? – 2014-10-30 16:26:16

+0

同意@PaulR文件名应该是.cpp,而不是.c – 2014-10-30 16:37:51