C++ 为什么我会得到;预期的&引用;错误和;变量未在范围中声明";错误
我有以下代码C++ 为什么我会得到;预期的&引用;错误和;变量未在范围中声明";错误,c++,C++,我有以下代码 #include <iostream> #include <set> #include <string> using namespace std; template<class Container> void print(const Container &c) { Container::const_iterator itr; for (itr=c.begin();itr!=c.end();itr++){
#include <iostream>
#include <set>
#include <string>
using namespace std;
template<class Container>
void print(const Container &c)
{
Container::const_iterator itr;
for (itr=c.begin();itr!=c.end();itr++){
cout<<*itr<< '\n';
}
}
int main(){
set<string,greater<string>>s;
s.insert("georgia");
s.insert("saqartvelo");
print(s);
return 0;
}
什么可能导致这种情况?我如何解决它?您需要
typename Container::const\u iterator
而不是Container::const\u iterator
在编译器读取代码时,它不知道
容器
有这样的类型(它是所谓的依赖名)。您需要类型名容器::常量迭代器
,而不是容器::常量迭代器
在编译器读取代码时,它不知道
容器
有这样的类型(它是所谓的依赖名)。Alexandre对前两个错误的看法是正确的。最后两个是由于C++的一个恼人的语法限制:模板表达式中的两个右括号之间需要有一个空格:
set<string,greater<string> > s;
set;
< C++ >将其解释为右移“代码> > <代码>操作符。 < P> Alexandre对前两个错误是正确的。最后两个是由于C++的一个恼人的语法限制:模板表达式中的两个右括号之间需要有一个空格:
set<string,greater<string> > s;
set;
< >否则,C++将其解释为右移“代码> > <代码>操作符.< /P>合法问题,但简洁地说。可能是合法问题的副本,但简洁地说。AH的可能副本有其他错误吗?)实际上,我没有读过依亲关系查找……啊,还有其他错误吗?;)事实上,我没有读过家属查询。。。