我有一个要使用的链接列表模板,但我不知道如何使用它或调用成员函数。
template <class Object>
class List {
public:
List();
List(const List & rhs);
~List();
bool isEmpty() const;
void makeEmpty();
ListItr<Object> zeroth() const;
ListItr<Object> first() const;
template <class Object> Object List<Object>::insert(const Object & x, const ListItr<Object> & p);
ListItr<Object> find(const Object & x) const;
ListItr<Object> findPrevious(const Object & x) const;
void remove(const Object & x);
const List & operator=(const List & rhs);
private:
ListNode<Object> *header;
};
行template <class Object> Object List<Object>::insert(const Object & x, const ListItr<Object> & p);
是否是声明成员函数的正确方法?到底是做什么的?如何调用函数并将值传递给它们以从此列表中插入或删除?
答案 0 :(得分:2)
您应该阅读有关模板的教程,因为这些是相对简单的事情。
然而:
模板不是类,它们在编译时生成类。
template<class Object>
Class List {...};
&lt;&gt;中的类是您要传入的实际类型的占位符。 它可能是任何东西。 (注意:你也可以写typename而不是class,它是一样的)
请注意:它不包含对象,它包含对象的类型。
您可以像这样创建列表对象:
List<int> list1;
List<double> list2;
List<MyOtherClass> list3;
然后他们表现得像普通对象,你通过&#34;。&#34;访问方法。或&#34; - &gt;&#34;操作
模板参数的类型在类中是已知的,只要您在类中定义内联方法,就不必显式调用Object类型的列表
同样为模板类中的方法声明另一个模板会产生第二个类型参数,该参数将由给予函数的参数推断出来,它们将是独立的(或实际上是名称冲突,我不确定,因为我&#39 ;我在手机上)
另外:请记住,您无法在.cpp文件中定义模板方法,所有带模板的内容必须位于.h文件中,否则链接器将抛出错误