C++ 使用类的静态成员时,什么可能会导致链接过程中出现 Unresolved external 错误?

标签 c++ static-members unresolved-external

我制作了一个程序,该程序在其自己的专用 cpp/h 文件组合中包含一个仅包含静态成员的类。可能是当我尝试在代码中使用这些静态成员时,我在链接器阶段收到“未解析的外部”错误。我记得将 h 文件包含在出现错误的 cpp 文件中。我不明白。这是错误的设计方法吗?

基本上,我希望一些属于第三方 API 一部分的全局对象可供我的整个程序使用,因此我将所有内容组织到一个类中,并将所有内容都设置为静态成员。我还创建了一个空的私有(private)构造函数以防止该类被实例化。这是一个明智的做法吗?静态成员都是指针,我尝试从分配新对象并将每个对象附加到静态指针开始。这种方法有问题吗?

谢谢!

最佳答案

您是否记得在某处实际定义变量,而不是仅仅在 header 中声明它?

Foo.hpp:

#ifndef FOO_HPP
#define FOO_HPP

class Foo {
public:
  static int bar;
};

#endif

Foo.cpp:

#include "Foo.hpp"

int Foo::bar; // <-- This being the critical line.

关于C++ 使用类的静态成员时,什么可能会导致链接过程中出现 Unresolved external 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6602543/

相关文章:

C++ 添加 2 个 3D vector 返回垃圾值

c++ - 将 all_of 与 lambda 函数集合一起使用?

java - 有没有办法在 iphone 上阅读编程语言?

c++ - 使 GCC 和其他 C++ 编译器非常严格

java - 在 Java 中用什么代替 finalize()

c++ - 静态指针初始化复位 'after' 初始化

java - 类本身的静态方法?

具有重载访问器函数的单例上的 C++ 未解析外部

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?

c++ - 错误 LNK2019 : unresolved external symbol "" referenced in function