Lỗi undefined reference

Mình tạo 1 lớp Link:

template <typename E>
class Link
{
private:
	static Link<E>* freeList;
public:
	E element;
	Link<E>* next;
	Link(const E& elemVal, Link<E>* nextVal) { element = elemVal; next = nextVal; }
	Link(Link<E>* nextVal) { next = nextVal; }
	Link() {}

	void* operator new(size_t)
	{
		if (freeList==NULL) return ::new Link;
		Link<E>* temp=freeList;
		freeList=freeList->next;
		return temp;
	}

	void operator delete(void* ptr)
	{
		((Link<E>*)ptr)->next=freeList;
		freeList=(Link<E>*)ptr;
	}
};

Nó báo lỗi undefined reference to freeList. Mình không hiểu tại sao lại như vậy ạ?

biến static trong class trước khi xài phải được khởi tạo, nếu ko nó sẽ báo lỗi. Ở đây freeList là biến static trong class Link

thêm code này vào phía sau khai báo của class Link

template <class E>
Link<E>* Link<E>::freeList = nullptr;
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?