0
我做了一個鏈表類來練習泛型編程。下面的代碼編譯,但我在主要的測試不打印任何東西到控制檯,就像它應該。任何想法爲什麼?我知道堆棧溢出不喜歡「修復我的錯誤」的帖子,但我真的在這裏虧本。我班的成員功能無法正常工作。任何想法爲什麼?
#include <iostream>
template <class T> class List {
public:
List();
~List();
int getSize();
void push_back(T);
bool contains(T);
private:
struct node {
T val;
node* next;
};
int size;
node* firstNodePtr;
node* lastNodePtr;
};
template <class T> List<T>::List() {
size = 0;
firstNodePtr = NULL;
lastNodePtr = NULL;
}
template <class T> List<T>::~List() {
node* curNodePtr = firstNodePtr;
node* nextNodePtr;
while (curNodePtr) {
nextNodePtr = curNodePtr->next;
delete curNodePtr;
curNodePtr = nextNodePtr;
}
}
template <class T> int List<T>::getSize() {
return size;
}
template <class T> void List<T>::push_back(T newElement) {
if (size == 0) {
firstNodePtr = new node;
firstNodePtr->next = lastNodePtr;
firstNodePtr->val = newElement;
++size;
} else {
node* newNode = new node;
lastNodePtr->next = newNode;
newNode->val = newElement;
newNode->next = NULL;
++size;
}
}
template <class T> bool List<T>::contains(T thisElement) {
node* curNodePtr = firstNodePtr;
while (curNodePtr) {
if (curNodePtr->val == thisElement)
return true;
curNodePtr = curNodePtr->next;
}
return true;
}
int main (int argc, char* const argv[]) {
List<int> myList;
myList.push_back(5);
myList.push_back(18);
std::cout << myList.getSize() << std::endl;
std::cout << myList.contains(18);
return 0;
}
當端設置
lastNodePtr = firstNodePtr;
你說它不打印任何東西,甚至不打印換行符? – IllusiveBrian你的調試器有什麼具體問題? –
test.exe中的0x00B244E2未處理的異常:0xC0000005:訪問衝突寫入位置0x00000004。 是你從編譯得到的。 – Emz