0

私は FlipIt ゲーム プログラムを構築しようとしている C++ コードに取り組んでいます。ヘッダー ファイルと .cpp ファイルがあります。ヘッダー ファイルには、関数の 1 つが列挙型関数である 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" と互換性がありません。

これは何を意味するのでしょうか?

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 に答える