我正在尝试构建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”不兼容
这是什么意思?
答案 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”。