我正在使用带有 Feature Pack 1 的 Visual Studio 2008。
我有一个像这样的 typedef 和这样typedef std::tr1::tuple<std::string, std::string, int> tileInfo
的函数const tileInfo& GetTile( int x, int y ) const
。
在实现文件中,该函数具有完全相同的签名(带有添加的类名限定符),我收到redefinition: different type modifiers
错误消息。它似乎在寻找一个int&
而不是一个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
...
};