首页 > 后端开发 > C++ > 如何解决分配给静态对象字段时出现的'无法解析的外部符号”错误?

如何解决分配给静态对象字段时出现的'无法解析的外部符号”错误?

Patricia Arquette
发布: 2024-10-31 16:03:18
原创
827 人浏览过

How Do I Resolve the

理解静态对象字段赋值的“未解析的外部符号”错误

在编写代码时,您可能会遇到需要赋值的情况来自不同类的静态对象字段的值。但是,尝试此类分配可能会导致链接错误,并显示消息“无法解析的外部符号”。

考虑一个简化的代码示例:

<code class="cpp">class A
{
public:
    A() {}
};

class B
{
public:
    static A* a;
};

int main()
{
    B::a = new A;
}</code>
登录后复制

尝试编译此代码将导致错误:

error LNK2001: unresolved external symbol "public:
static class A * B::a" (?a@B@@2PAVA@@A)
登录后复制

发生此错误是因为静态对象字段未在其类声明中隐式定义。根据 C 参考标准,“类定义中静态数据成员的声明不是定义,并且可能是不完整的类型。”

静态对象字段定义规则

要解决此错误,您必须在类定义之外显式定义静态对象字段。此规则适用于所有静态对象字段,无论其可访问性或可变性如何。

示例定义:

<code class="cpp">A* B::a = nullptr;</code>
登录后复制

将定义放置在封闭的命名空间范围中可确保链接器在尝试解析 main() 中的赋值时可以找到该符号。

以上是如何解决分配给静态对象字段时出现的'无法解析的外部符号”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板