【发布时间】:2014-02-17 10:11:35
【问题描述】:
我正在用 C++ 中的自引用类创建一个链表,我想要一个名为“startPointer”的 Item 类型的静态指针(Item 是类名),这样当我调用我的静态成员函数“free”时,它可以通过使用 Item::startPointer 来释放内存,但我得到一个错误(显示在代码之后)。请帮忙,
class Item
{
public:
std::string name;
int row,column;
int fileType;
Item *ptr;
static Item *startPointer;
void setNextPointer(Item* ptr)
{
ptr=ptr;
}
Item *getNextPointer()
{
return ptr;
}
static void free()
{
Item *p,*temp;
p=startPointer;
while(p!=NULL)
{
temp=p;
p=p->getNextPointer();
delete temp;
}
}
};
cube.o:cube.cpp:(.text$_ZN4Item4freeEv[Item::free()]+0x8): undefined reference to `Item::startPointer'
collect2: ld returned 1 exit status
mingw32-make.exe: *** [cube.exe] Error 1
Execution terminated
【问题讨论】:
-
您应该阅读有关 cosntructors、destructors 和 RAII 的内容。
标签: c++ static undefined-reference self-reference