C++ 包含元组时的类型问题
我正在使用VisualStudio2008和功能包1 我有这样一个typedefC++ 包含元组时的类型问题,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
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,这让我相信它不能理解它是什么类型。是的,它不能理解它是什么类型,我们试图想象他的代码来理解为什么。。。如果我们看到一些示例代码,可能会更容易一些。它是如何组织的。。。