3. 下面的List定义是错误的,如何修正?并解释下为何这么修改? template <typename elemType> class ListItem; template <typename elemType> class List { public: List(); List(const List &); List &operator=(const List &); ~List(); void insert(ListItem *ptr, elemType va
时间: 2023-12-17 14:02:32 浏览: 85
cpp代码-模板 泛型 template<typename> template<class>
这个List的定义是有问题的,因为它的insert函数的第一个参数是一个指向ListItem的指针,而ListItem是一个类模板,我们需要知道它的模板参数才能正确地使用它。所以,我们需要将ListItem的模板参数作为List类模板的一个参数传递进去。
正确的定义应该是这样的:
```
template <typename elemType> class List;
template <typename elemType>
class ListItem {
friend class List<elemType>;
private:
elemType value;
ListItem *next;
};
template <typename elemType>
class List {
public:
List();
List(const List &);
List &operator=(const List &);
~List();
void insert(ListItem<elemType> *ptr, elemType val);
private:
ListItem<elemType> *front, *end;
};
```
我们在List类模板中增加了一个模板参数elemType,然后在insert函数中,使用ListItem<elemType>来代替原来的ListItem。这样就可以正确地使用ListItem了。同时,我们还需要将ListItem声明为List的友元类,以便在List中访问ListItem的私有成员。
阅读全文