-1
我想創建一個鏈表類,它使用一個節點類作爲列表中的節點(下一個節點,數據)。鏈接列表類用作包含成員函數的列表頭,並且可以與任何數據類型(即模板)一起使用。我很難理解模板如何在類聲明和成員函數實現中工作。C++模板類成員函數,依賴於其他模板類
我對鏈表兩個模板類(這裏是相關部分):
template<typename NodeObjectType>
class ListNode
{
public:
NodeObjectType data;
ListNode<NodeObjectType>* next;
ListNode() : next(NULL){}
ListNode(const NodeObjectType& item, ListNode<NodeObjectType>* nextNode = NULL)
{
data = item;
next = nextNode;
}
};
template<typename ObjectType>
class myList
{
public:
myList()
{
Head = NULL;
}
// Other member Functions ...
bool contain(ObjectType x)
{
ListNode<ObjectType> *current = Head;
while (current != NULL)
{
if (current->data == x)
return true;
current = current->next ; // move forward one step
}
return false;
}
void add(ObjectType x)
{
if(!contain(x))
{
ListNode<ObjectType>* NewListNode(x , Head);
Head = NewListNode;
}
}
private:
ListNode<ObjectType>* Head;
};
在編譯時出現錯誤
In instantiation of 'void myList<ObjectType>::add(ObjectType) [with ObjectType = int]':
required from here
error: expression list treated as compound expression in initializer [-fpermissive]
我在做模板對象類型傳遞錯誤或者是別的什麼?謝謝
這有什麼好做的模板。 'T x(a,b);'在棧上傳遞'a'和'b'給構造函數; 'T * px = new T(a,b);'在堆上傳遞'a'和'b'到構造函數的'T'。 'T * px(a,b);'是一個科學怪人的混亂,這是一個語法錯誤。 – 2014-09-18 21:05:36
啊,我現在看到了,謝謝。 – Evan 2014-09-18 21:45:16