template<class U, class W>
std::ostream& operator<<( std::ostream & out, const Alias<U, W> & A)
{
out<<A.ItoS.size()<<std::endl;
for (std::map<W, U>::const_iterator it = A.ItoS.begin(); it != A.ItoS.end(); it++)
out<<it -> first<<" "<<it -> second<<std::endl;
return out;
}
错误在线:
for (std::map<W, U>::const_iterator it = A.ItoS.begin(); it != A.ItoS.end(); it++)
错误:预期';'在'它'之前
错误:'it'未在此范围内声明
其他类函数没有任何编译问题。
虽然我使用std :: string而不是U而int而不是W一切都很好。 我正在使用Codeblocks 10和MinGW编译器。
答案 0 :(得分:2)
你忘记了typename
:
typename std::map<W, U>::const_iterator it = A.ItoS.begin();
//^^^^^^^
const_iterator
是从属名称,因此此处需要typename
。有关详细说明,请阅读以下主题:
在C ++ 11中,您只需编写:
auto it = A.ItoS.begin();
这对C ++程序员来说是一种解脱!