gpt4 book ai didi

c++ - 当我的类有静态成员时,为什么我的 C++ 程序不链接?

转载 作者:可可西里 更新时间:2023-11-01 18:42:31 25 4
gpt4 key购买 nike

我有一个名为 Stuff 的小类,我想在其中存储一些东西。这些东西是一个 int 类型的列表。在我使用的任何类的代码中,我都希望能够访问 Stuff 类中的这些内容。

主要.cpp:

#include "Stuff.h"

int main()
{
Stuff::things.push_back(123);
return 0;
}

东西.h:

#include <list>

class Stuff
{
public:
static list<int> things;
};

但是我在使用这段代码时遇到了一些构建错误:

error LNK2001: unresolved external symbol "public: static class std::list<int,class std::allocator<int> > Stuff::things" (?things@Stuff@@2V?$list@HV?$allocator@H@std@@@std@@A) Main.obj CSandbox

fatal error LNK1120: 1 unresolved externals C:\Stuff\Projects\CSandbox\Debug\CSandbox.exe CSandbox

我是一名 C# 专家,我正在尝试为一个副项目学习 C++。我认为我不明白 C++ 如何对待静态成员。所以请解释我在这里做错了什么。

最佳答案

在类声明中提及静态成员只是一个声明。您必须包含静态成员的一个定义,以便链接器正确连接所有内容。通常,您会在 Stuff.cpp 文件中包含如下内容:

#include "Stuff.h"

list<int> Stuff::things;

请务必将 Stuff.cppMain.cpp 一起包含在您的程序中。

关于c++ - 当我的类有静态成员时,为什么我的 C++ 程序不链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1976983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com