C4346: “std::map::iterator” : 依赖名称不是类型

自助开通VIP,整站资源任意下载

一个VC6的代码,转成VS2003的时候,碰到下面的语句编译出错,VC6下没问题。

 

template <class Type> class CN3TableBase
{
public:
CN3TableBase();
virtual ~CN3TableBase();

protected:
...

typedef std::map<unsigned int, Type>::iterator it_Table;
typedef std::map<unsigned int, Type>::value_type val_Table;
typedef std::pair<it_Table, bool> pair_Table;
};

 

C4346: “std::map::iterator” : 依赖名称不是类型

改为:

C4346: “std::map::iterator” : 依赖名称不是类型

typedef typename std::map<unsigned int, Type>::iterator it_Table;
typedef typename std::map<unsigned int, Type>::value_type val_Table;
typedef typename std::pair<it_Table, bool> pair_Table;

就解决了

 

原因:可能编译器不清楚map的iterator是否是个类型 需要通过typename告诉编译器 这是个类型

本站源码仅做学术研究,自娱自乐使用,不得用于赌博性质的非法商业用途!转载请说明出处!
棋牌资源网 » C4346: “std::map::iterator” : 依赖名称不是类型

这里有你所需要的,找专业的人做专业的事!

游戏演示 联系客服