2

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

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

谢谢!

4

2 回答 2

3

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

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.
于 2011-07-06T20:42:10.387 回答
0

如果您正在访问第三方库中的全局对象,则需要确保您正在与该库链接。仅针对库的标头进行编译是行不通的。

于 2011-07-06T20:37:14.550 回答