1

Feature Pack 1 で Visual Studio 2008 を使用しています。

typedef std::tr1::tuple<std::string, std::string, int> tileInfo 私はこのような関数でこのようなtypedefを持っていますconst tileInfo& GetTile( int x, int y ) const

実装ファイルでは、関数にまったく同じシグネチャ (クラス名修飾子が追加されている) があり、redefinition: different type modifiersエラーが発生しています。int&a の代わりに aを探しているようですtileInfo&

ヘッダーの関数のタイプにマウスを合わせるtileInfo&と、小さなバーが表示されますstatic const int tileInfo。これが問題かもしれないと思いますが、どうすればよいかわかりません。コンパイラstd::tr1::tuple<std::string, std::string, int>static const int.

どんな助けでも大歓迎です、ありがとう。

PSこれは、同じ状況をエミュレートする例で、最小限に圧縮されています。

#include <tuple>

class Blah {
 public:
  typedef std::tr1::tuple<std::string, std::string, int> tileInfo;
  tileInfo& GetTile( int x, int y ); // When you mouse over tileInfo in this line, it says static const int
  ...
};
4

2 に答える 2

2

ヘッダー ファイルをtypedef.

コンパイラが を認識できないように聞こえるため、デフォルトtypedefのタイプはです。tileInfoint

于 2010-04-22T03:12:46.717 に答える
0

typedef を戻り値の型やローカル変数として使用する場合、クラス内であっても、クラス名で修飾する必要があったようです。たとえば、ヘッダーの署名は、関数が typedef を持つクラスにある場合、これを行う必要はないと考えたGetTileはずです。TileMap::tileInfo& GetTile( int x, int y );

于 2010-04-24T13:36:16.157 に答える