C ++枚举类型作为函数

时间:2013-04-15 05:14:51

标签: c++ visual-studio-2010 enums

我正在尝试构建FlipIt游戏程序的C ++代码。我有一个头文件和一个.cpp文件。在头文件中,我有一个flipit类,其中一个函数是枚举类型函数。例如,在头文件FlipIt.h中:

(枚举声明)

enum  Color  { clear_ = false, solid_ = true };

(功能)

Color  fetch( int  row, int  col ) const;

(在FlipIt.cpp文件中,这就是我在类中实现的功能)

int FlipIt::fetch( int  row, int  col ) const

当我这样做时,VS2010说IntelliSense:声明与“FlipIt :: Color FlipIt :: fetch(int row,int col)const”不兼容

这是什么意思?

3 个答案:

答案 0 :(得分:2)

Color不是int。它是enum并且它有一些基础类型(这取决于编译器),但它仍然是另一种类型。

答案 1 :(得分:1)

这意味着您在方法声明中承诺的FlipIt::Color返回值与您在实施中提供的类型不同。 enum不是int 试试

FlipIt::Color FlipIt::fetch(int row, int col) const { } 

为您的实施。

答案 2 :(得分:0)

您必须区分枚举类型是在哪个名称空间中定义的。如果您的枚举刚刚在头文件中定义,而不是在cpp文件中定义。您包含头文件,链接器可以找到定义的类型,如果在类中定义,则必须添加类前缀。链接器可以找到类型的定义。   因此,如果您的枚举类型在全局区域中定义,则没有问题。如果在类中定义,则必须使用“Class :: Type”。