我想这样做:
static const enum GSENSITIVITY {G1=0,G15=1,G2,G3,G4,G8,G16}gSense;
如果我在.h文件中键入此内容,一切都近乎完美,但我无法创建一个返回GSENSITIVITY类型的方法。它无法识别它。此外,我不能在.cpp上做任何gSense的定义。至少我使用的语法不起作用。哪种语法正确?
我也不能只输入:
static const enum GSENSITIVITY {G1=0,G15=1,G2,G3,G4,G8,G16};
我收到此错误:
错误:只能为对象和函数指定存储类
答案 0 :(得分:1)
在第一个示例中,您无法在任何源文件中定义gSense
,因为它已在头文件中定义。
此外,第二个示例不起作用,因为您没有定义变量,而static
和const
在定义enum
时没有任何意义。
答案 1 :(得分:0)
代码示例混合了两种不同的概念。有时这没关系,但它可能会让人感到困惑。
定义枚举类型:
enum GSENSITIVITY { G1, G15, G2, G3, G4, G8, G16 };
G1
的值为0,每个后续枚举器获取下一个值。也就是说,不需要问题中的显式值。
这就是从函数返回枚举类型值所需的全部内容:
GSENSITIVITY f() { return G1; }
如果要创建枚举类型的对象,就像创建任何其他类型的对象一样:cv-qualifiers,type name,object name:
const GSENSITIVITY gSense; // value is 0, i.e., G1
或添加可选的初始化程序:
const GSENSITIVITY gSense = G3;
您不需要使用static
标记常量;这是const
暗示的。
答案 2 :(得分:0)
如果没有更多的背景,就无法分辨出你想要做什么。
static const enum GSENSITIVITY {G1=0,G15=1,G2,G3,G4,G8,G16}gSense;
如果那应该是一个类成员,那就没关系 - 它定义了类型GSENSITIVITY
,并且还声明了变量gSense
。您还需要在源文件中定义和初始化变量,以便只有一个定义:
const my_class::GSENSITIVITY gSense = something;
如果它不是类成员,则会声明类型,但也会定义变量并声明它。由于它是const
,因此定义也必须用值初始化它。
在任何一种情况下,声明返回GSENSITIVITY
的函数应该没有问题;如果您遇到问题,则需要发布代码和错误消息。
static const enum GSENSITIVITY {G1=0,G15=1,G2,G3,G4,G8,G16};
它定义了一个类型,并且正如错误消息所示,static
和const
无法为类型定义指定。