1.如何访问template类中容器成员,特别是层次比较深的时候, "::"符比较难做到 solution : typename example: template<typename T, class Container = std::vector<T> > class MyContainer { public: T& front() { return _con.front(); } void insert(const T& t) { _con.push_back(t); } size_t capacity() { return _con.capacity(); } void show() { for(Container::iterator i=_con.begin(); i < _con.end(); i++) cout<<(*i)<<endl; } template<typename T2, class T2Container > //注意这里,1要template, //2不能有default class Container = std::vector<T> 了 MyContainer<T>& operator=(MyContainer<T2, T2Container>& vec2) { if((void*)this == (void*)&vec2) return *this; _con.clear(); /*for(int i=0; i< vec2._con.size(); i++) insert(vec2._con[i]);*/ //typename 强调的是T2Container::iterator是类型, //不是T2Container的静态变量,::有表示类型或成员变量,静态变量的可能, 还可能表示命令空间 for(typename T2Container::iterator i= vec2._con.begin(); i< vec2._con.end(); i++) { insert((T)*i); } return *this; } public: Container _con; };