对静态成员的未定义引用:初学者指南
静态数据成员通常用于在类的实例之间共享信息。然而,开发人员在使用静态数据成员时偶尔会遇到“未定义的引用”错误。这个问题是由于声明和定义之间的区别而产生的。
理解声明和定义
声明向编译器介绍变量的存在,而不指定其内存位置。另一方面,定义为变量分配内存并提供其地址。
对于静态数据成员,它们的声明发生在类定义中,但不为它们分配地址。实际的定义必须单独提供。
定义静态数据成员
要解决“未定义引用”错误,请在类定义之外显式定义静态数据成员,通常在实现文件(.cpp)。例如,考虑以下代码:
// Header file (.h) class Example { static bool exampleStaticMember; }; // Implementation file (.cpp) bool Example::exampleStaticMember;
整数和枚举类型的异常
整数或枚举类型的静态数据成员可以直接在类中初始化定义:
class Example { static const int initialized = 15; };
在这种情况下,实现文件中的定义必须省略初始化器:
const int Example::initialized;
模板中的静态数据成员
对于模板,静态数据成员与类声明一起在头文件中定义。单一定义规则的例外允许类模板的静态数据成员的多个定义。
“static”的其他用途
超出类范围,“static”具有附加含义:
以上是为什么 C 中的静态成员会出现'未定义引用”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!