静态成员中对类静态成员的未定义引用 我在C++中创建了一个带有自引用类的链表,并且我希望有一个名为“StestPosiple”的类型项(item是类名)的静态指针,这样当我调用静态成员函数“FieldPoT”时,它可以通过使用item::StaskPosit释放内存,但是我得到了一个错误(在代码之后显示)。请帮忙 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; } } };

静态成员中对类静态成员的未定义引用 我在C++中创建了一个带有自引用类的链表,并且我希望有一个名为“StestPosiple”的类型项(item是类名)的静态指针,这样当我调用静态成员函数“FieldPoT”时,它可以通过使用item::StaskPosit释放内存,但是我得到了一个错误(在代码之后显示)。请帮忙 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; } } };,c++,static,undefined-reference,self-reference,C++,Static,Undefined Reference,Self Reference,您必须这样定义静态成员: Item* Item::startPointer = nullptr; // or = NULL; if your cpp version is below c++11 在单个编译单元(cpp文件)中写入这样一行,否则只会声明成员。您必须这样定义静态成员: Item* Item::startPointer = nullptr; // or = NULL; if your cpp version is below c++11 在单个编译单元(cpp文件)中编写这样一行

您必须这样定义静态成员:

Item* Item::startPointer = nullptr; // or = NULL; if your cpp version is below c++11

在单个编译单元(cpp文件)中写入这样一行,否则只会声明成员。

您必须这样定义静态成员:

Item* Item::startPointer = nullptr; // or = NULL; if your cpp version is below c++11

在单个编译单元(cpp文件)中编写这样一行,否则就只声明了成员。

nullptr
with
C++11
@P0W我认为标准自适应远远超过了我们可以假设的使用C++11(如果不这样说的话)。在我看来,最好是向代码展示它应该是如何编写的,而不是它以前是如何编写的。
nullptr
C++11
@P0W我认为标准的改编远远超过了我们可以假设的使用C++11(如果不是这样说的话)。在我看来,最好是向代码展示它应该如何编写,而不是以前是如何编写的。你应该阅读关于协构造函数、析构函数和RAII的内容。可能的重复应该阅读关于协构造函数、析构函数和RAII的内容