C++ 包含元组时的类型问题

C++ 包含元组时的类型问题,c++,tuples,tr1,C++,Tuples,Tr1,我正在使用VisualStudio2008和功能包1 我有这样一个typedeftypedef std::tr1::tuple tileInfo 使用这样的函数const tileInfo&GetTile(intx,inty)const 在实现文件中,函数具有完全相同的签名(添加了类名限定符),我得到了一个重新定义:不同类型修饰符错误。它似乎在寻找int&而不是tileInfo& 当我将鼠标悬停在标题中的函数类型上时,即tileInfo&它会弹出一个小条,上面写着static const int

我正在使用VisualStudio2008和功能包1

我有这样一个typedef
typedef std::tr1::tuple tileInfo
使用这样的函数
const tileInfo&GetTile(intx,inty)const

在实现文件中,函数具有完全相同的签名(添加了类名限定符),我得到了一个
重新定义:不同类型修饰符
错误。它似乎在寻找
int&
而不是
tileInfo&

当我将鼠标悬停在标题中的函数类型上时,即
tileInfo&
它会弹出一个小条,上面写着
static const int tileInfo
。我想这可能是问题所在,但我不知道该怎么办。这让我相信编译器认为
std::tr1::tuple
是一个
静态常量int

谢谢你的帮助

这里是一个模拟相同情况的示例,只是压缩到最小值

#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
  ...
};
#包括
课堂废话{
公众:
typedef std::tr1::tuple tileInfo;
tileInfo&GetTile(intx,inty);//当您将鼠标移到这一行的tileInfo上时,它会显示static const int
...
};

确保包含带有
类型定义的头文件


听起来编译器似乎看不到
typedef
,因此
tileInfo
的类型默认为
int

,似乎当使用typedef作为返回类型或局部变量时,即使在类中,我也必须使用类名来限定它。例如,标题中的
GetTile
签名应该是
TileMap::tileInfo&GetTile(intx,inty)我认为当函数在包含typedef的类中时,不需要这样做。

它包含在内。我最后描述的内容实际上显示在标题中。函数的签名位于公共可见性中的typedef下方。在定义typedef之前是否包含
元组
字符串
?我认为这可能与我没有正确安装功能包1或其他内容有关。声明GetTile的标头中是否包含typedef标头?还是仅仅在源文件中?如果它认为它的头中是int,这让我相信它不能理解它是什么类型。是的,它不能理解它是什么类型,我们试图想象他的代码来理解为什么。。。如果我们看到一些示例代码,可能会更容易一些。它是如何组织的。。。