我可以在标头中定义和声明extern对象的任何方式吗?

用户名

我正在写一个完全基于模板的库,所以我没有任何cpp文件。现在我想声明一个全局变量,然后我意识到我无处可去。

如果仅在标头中声明它,则会出现“多个定义”错误,如果使用extern,则必须创建一个cpp文件来真正声明它。

那么,有什么方法可以在标头中声明全局变量?

PS因为模板类中的静态成员可以(仅)在标头中声明,所以它如何工作?

丹尼斯·舍雷梅(Denis Sheremet)

如@MM所述,inline如果您在C++17以上级别,则可以使用声明

但是,如果不是这种情况,则可以声明inline函数,该函数返回对static变量的引用,如下所示:

inline int& getData() {
    static int data;
    return data;
}

然后,在您的.cpp文件中(以及标头内的任何函数体内),您都可以像这样简单地调用它int& data = getData()

附带说明一下,如果要确保仅创建一次全局对象并且不会意外复制它,则最好使用信号符号代替。全局变量更像是c风格的,在c ++中并不是真正的好习惯。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以任何方式访问损坏的机器数据吗?

来自分类Dev

自定义键盘扩展名可以通过任何方式识别我的配套应用程序的用户吗?

来自分类Dev

我可以通过任何方式将数据分配给从OpenCV对象取消引用检索的double函数返回吗?

来自分类Dev

我可以通过其他任何方式来复制Asana项目吗?

来自分类Dev

HISTFILE env var在程序中未设置。我可以以任何方式访问它吗?

来自分类Dev

我可以在javascript中以任何方式重构此代码吗?

来自分类Dev

我可以调用作为模板参数的对象的任何方法吗?

来自分类Dev

Gradle可以以任何方式帮助解决Jar地狱吗?

来自分类Dev

我可以依靠标准标头中的包含保护吗

来自分类Dev

我可以在运行时重新定义在OpenCascade / OCCT标头中定义的c ++静态常量吗?

来自分类Dev

我可以声明一个可以在任何对象内调用的函数吗?

来自分类Dev

为什么对于函数的定义和声明,我可以使用不同的签名?

来自分类Dev

在C的标头中定义别名类型的extern变量

来自分类Dev

C ++标头中extern变量的未定义引用

来自分类Dev

瞬态变量可以以任何方式序列化吗?

来自分类Dev

这个preg_replace示例可以以任何方式利用吗?

来自分类Dev

我们可以使用ADB命令或其他任何方式将调试信息添加到Logcat吗?

来自分类Dev

Chrome 79错误刚刚从我的Cordova应用中删除了本地存储。用户可以通过任何方式还原吗?

来自分类Dev

我可以将1个孩子减去另一个孩子的orderByChildren或orderByValue吗?(或使用计算变量的其他任何方式)

来自分类Dev

Python:在替换文件内容时,此代码能以任何方式写入我的文件吗?

来自分类Dev

我可以通过这种方式访问HTTP标头吗?

来自分类Dev

在标头中声明全局变量`extern const int`,但在源文件中声明仅`int`

来自分类Dev

仅在标头中定义的函数才能内联。我想念什么吗?

来自分类Dev

仅在标头中定义的函数才会内联。我想念什么吗?

来自分类Dev

构造Scrapy Request对象时,可以指定任何方法作为回调吗?

来自分类Dev

在标头中声明变量并在.c中定义

来自分类Dev

Rspec,您可以存根对象上不存在的方法(或模拟可以采用任何方法的对象)吗?

来自分类Dev

我可以通过编程方式设置任何类型的属性吗?

来自分类Dev

Swift / SpriteKit-以任何方式合并/缓存SKReferenceNodes吗?

Related 相关文章

  1. 1

    我可以任何方式访问损坏的机器数据吗?

  2. 2

    自定义键盘扩展名可以通过任何方式识别我的配套应用程序的用户吗?

  3. 3

    我可以通过任何方式将数据分配给从OpenCV对象取消引用检索的double函数返回吗?

  4. 4

    我可以通过其他任何方式来复制Asana项目吗?

  5. 5

    HISTFILE env var在程序中未设置。我可以以任何方式访问它吗?

  6. 6

    我可以在javascript中以任何方式重构此代码吗?

  7. 7

    我可以调用作为模板参数的对象的任何方法吗?

  8. 8

    Gradle可以以任何方式帮助解决Jar地狱吗?

  9. 9

    我可以依靠标准标头中的包含保护吗

  10. 10

    我可以在运行时重新定义在OpenCascade / OCCT标头中定义的c ++静态常量吗?

  11. 11

    我可以声明一个可以在任何对象内调用的函数吗?

  12. 12

    为什么对于函数的定义和声明,我可以使用不同的签名?

  13. 13

    在C的标头中定义别名类型的extern变量

  14. 14

    C ++标头中extern变量的未定义引用

  15. 15

    瞬态变量可以以任何方式序列化吗?

  16. 16

    这个preg_replace示例可以以任何方式利用吗?

  17. 17

    我们可以使用ADB命令或其他任何方式将调试信息添加到Logcat吗?

  18. 18

    Chrome 79错误刚刚从我的Cordova应用中删除了本地存储。用户可以通过任何方式还原吗?

  19. 19

    我可以将1个孩子减去另一个孩子的orderByChildren或orderByValue吗?(或使用计算变量的其他任何方式)

  20. 20

    Python:在替换文件内容时,此代码能以任何方式写入我的文件吗?

  21. 21

    我可以通过这种方式访问HTTP标头吗?

  22. 22

    在标头中声明全局变量`extern const int`,但在源文件中声明仅`int`

  23. 23

    仅在标头中定义的函数才能内联。我想念什么吗?

  24. 24

    仅在标头中定义的函数才会内联。我想念什么吗?

  25. 25

    构造Scrapy Request对象时,可以指定任何方法作为回调吗?

  26. 26

    在标头中声明变量并在.c中定义

  27. 27

    Rspec,您可以存根对象上不存在的方法(或模拟可以采用任何方法的对象)吗?

  28. 28

    我可以通过编程方式设置任何类型的属性吗?

  29. 29

    Swift / SpriteKit-以任何方式合并/缓存SKReferenceNodes吗?

热门标签

归档