0

我正在编写 C++ 代码,试图构建一个 FlipIt 游戏程序。我有一个头文件和一个 .cpp 文件。在头文件中,我有一个翻转类,其中一个函数是枚举类型函数。例如在头文件 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”不兼容

这是什么意思?

4

3 回答 3

2

Color不是int。它是enum并且它有一些底层类型(这取决于编译器),但无论如何它是另一种类型。

于 2013-04-15T05:21:11.097 回答
1

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

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

为您的实施。

于 2013-04-15T05:21:34.283 回答
0

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

于 2013-04-15T07:09:29.993 回答