错误消息“未定义对'List :: a'的引用”

Pri*_*ram 2 c++ static pointers

链接代码时出现以下错误。我该如何解决这个问题?

看来静态变量没有被初始化。

#include <iostream>
#include <cstdlib>

using namespace std;

struct name{
    char c;
};

class List {
    static name *a;
public:
    static void modify()
    {
        a = new name();
        cout<<"yes";
    }
};

name List::*a = NULL;

int main()
{
    List::modify();
}

g++ O3 -Wall -c -fmessage-length=0 -o sample.o "..\\sample.cpp"
g++ -o sample.exe sample.o
sample.o:sample.cpp:(.text.startup+0x35): undefined reference to `List::a'
collect2.exe: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

son*_*yao 5

name List::*a = NULL;并没有达到您的预期。它定义了一个名为的全局变量a,该全局变量是指向List类型的非静态成员的指针name

的定义List::a应为

name* List::a = NULL;
Run Code Online (Sandbox Code Playgroud)

  • @PriteshVikram您的声明有效。这并不意味着您认为的含义,但仍然有效。 (2认同)