template <class T> class List { struct Item { T data; Item *next; }; public: List(); ~List(); T max(T x[],int n) { int i; T maxv = x[0]; for (i = 1; i<n; i++) if (maxv<x[i]) maxv = x[i]; return maxv; }; bool operator<(const T&, const T&);//有错 bool isEmpty() const; int length() const; const T &at(int k) const; int search(const T &v); void remove(int k); void insert(int k, const T &v); void output(); private: Item *header; }; 我想对<进行运算符重载,因为max函数中使用了<,但是T的类型是未知的,可能是double 可能是char[]字符串,所以我想根据不同类型的T进行不同的比较,请问要怎么写,或者怎么改写这个max函数 |
|
20分 |
不需要对<进行重载,只要T是内置类型,都可以比较
|
楼主没啃过《stl源码剖析》吧。
基础语法的不足,这个任务对楼主是困难了些。 |
|
那如果T是char*的字符串,<不就不能比较了么?不是要用strcmp么 |
|
那个max里面我忘改了,有点问题,max就是返回List中T的最大值 |
|
20分 |
T的operator<应该由T提供,不应该list来提供,list的operator<应该是这样的
template<class T> bool operator<(const List<T>&, const List<T>&); |