c++ - 错误消息 "undefined reference to ' 列表::a'"

标签 c++ pointers static

我在链接代码时收到如下所示的错误。我该如何解决这个问题?

静态变量似乎没有被初始化。

#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

最佳答案

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

List::a 的定义应该是

name* List::a = NULL;

关于c++ - 错误消息 "undefined reference to ' 列表::a'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55219747/

相关文章:

c++ - c++ 是否有非模板元语言?

c++ - LNK2019 用于静态库中的内联函数

C 指向固定大小数组的现有指针

ios - static const 与 extern const

java - 定义只接受特定范围值的 Java 变量

c++ - 我在 Qt 设计器文件->新建中找不到 C++ 项目

C++ 错误 : No Match for Call

c++ - C++中int*和char*的区别

c - C 中空指针的自由数组

c++ - C++中类或结构的常量静态成员变量不需要单独定义吗?