01/10/2018, 16:52

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 ạ?

viết 19:05 ngày 01/10/2018

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;
Bài liên quan
0