bob*_*lex 0 c++ migration visual-c++-6
下面的代码在VC6中编译得很好但是当我在VS2008中编译同一个项目时,它会给出以下错误错误C2146:语法错误:缺少';' 在标识符'm_pItr'之前
template <class pKey, class Data, class pCompare,
class hKey = int, class hCompare = less<hKey>,
class sKey = int, class sCompare = less<sKey>,
class tKey = int, class tCompare = less<tKey>,
class cKey = int, class cCompare = less<cKey>>
class GCache
{
private:
typedef map<pKey, Data, pCompare> PRIMARY_MAP;
PRIMARY_MAP pMap;
PRIMARY_MAP::iterator m_pItr; //error here
//Code truncated
}
Run Code Online (Sandbox Code Playgroud)
这里有什么不妥的想法?有能力将C++代码从VC6迁移到VC2005/2008的人可能会有所帮助.
您可能需要插入'typename',以告诉编译器PRIMARY_MAP :: iterator在所有情况下都是一个类型.
例如
class GCache
{
private:
typedef map<pKey, Data, pCompare> PRIMARY_MAP;
PRIMARY_MAP pMap;
typename PRIMARY_MAP::iterator m_pItr;
//Code truncated
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1643 次 |
| 最近记录: |