首页 > 后端开发 > C++ > 为什么我的静态 `constexpr char` 数组会导致'未定义的引用”?

为什么我的静态 `constexpr char` 数组会导致'未定义的引用”?

Patricia Arquette
发布: 2024-12-21 15:15:23
原创
484 人浏览过

Why Does My Static `constexpr char` Array Cause an

对 Static constexpr char[]的未定义引用

当尝试创建静态 const char 数组作为类的成员时,您可以遇到错误“未定义的引用baz."

说明:

GCC 要求您对静态 const 数组使用 constexpr。但是,仅将数组声明和初始值设定项放在类定义中是不够的。您还必须在 .cpp 文件中提供单独的成员定义

要解决此问题:

  1. 在您的 .cpp 文件中,添加类声明后的以下行:

    constexpr char foo::baz[];
    登录后复制

    这声明了静态成员的定义baz.

  2. 将数组的声明和初始化留在类定义中:

    // .hpp
    struct foo {
       void bar();
       static constexpr char baz[] = "quz";
    };
    登录后复制

原因:

类定义提供静态成员的声明和初始化器。但是,分配内存和初始化数组的成员定义需要在 .cpp 文件中单独提供。通过添加此定义,链接器将能够找到符号 baz 并解析未定义的引用。

以上是为什么我的静态 `constexpr char` 数组会导致'未定义的引用”?的详细内容。更多信息请关注PHP中文网其他相关文章!

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