棋牌源码网

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

 

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

C4346: “std::map::iterator	” : 依赖名称不是类型,C4346: “std::map::iterator” : 依赖名称不是类型,第1张

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” : 依赖名称不是类型,第2张

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告诉编译器 这是个类型

本文链接:https://www.9n9nw.com/game/1585.html

版权声明:

本站发布的内容若侵犯到您的权益,请邮件联系 web58678@gmail.com 删除,我们将及时处理!

从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!

本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。

本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。

若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。