有关模板类中嵌套一个类的问题
template<class A,class B>
class Relation{
friend ostream& operator<< <> (ostream& os,Relation<A,B>& r);
private:
string nom;
string symbole;
const set<A>* ptr_a;
const set<B>* ptr_b;
set< pair<A,B> > ensemble;
public:
Relation(const string& n,const string& s,const set<A>& source,const set<B>& destination);
const string& get_nom()const{return nom;}
const string& get_symbole()const{return symbole;}
const set<A>* get_source()const{return ptr_a;}
const set<B>* get_destination()const{return ptr_b;}
void ajouter(const A& a,const B& b);
bool est_en_relation(const A& a,const B& b);
class iterateur{
private:
set< pair<A,B> >::iterator it;
public:
iterateur(set< pair<A,B> >::iterator& i):it(i){}
void operator++(){it++;}
void operator++(int){it++;}
void operator--(){it--;}
void operator--(int){it--;}
pair<A,B>& operator*(){return *it;}
bool operator!=(iterateur& i)const{return it!=i.it;}
};
iterateur begin()const{return iterateur(ensemble.begin());}
iterateur end()const{return iterateur(ensemble.end());}
};
里面嵌套了一个模拟iterator的iterateur类,由于是第一次写模板类,有许多东西不是很懂......
以下是错误代码:
Error 5 error C2061: 语法错误: 标识符“iterator” g:\code\relation\relation\relation.h 30 1 Relation
Error 2 error C2146: 语法错误: 缺少“;”(在标识符“it”的前面) g:\code\relation\relation\relation.h 28 1 Relation
Error 3 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int g:\code\relation\relation\relation.h 28 1 Relation
Warning 1 warning C4346: “std::set<std::pair<_Ty1,_Ty2>>::iterator”: 依赖名称不是类型 g:\code\relation\relation\relation.h 28 1 Relation
Warning 4 warning C4346: “std::set<std::pair<_Ty1,_Ty2>>::iterator”: 依赖名称不是类型 g:\code\relation\relation\relation.h 30 1 Relation
麻烦各位指正,谢谢!