gpt4 book ai didi

C++静态变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:56 26 4
gpt4 key购买 nike

我正在尝试设计仅包含 header 的库,不幸的是,它需要具有全局静态变量(在类中或命名空间中)。

有没有什么方法或首选解决方案可以在保持仅 header 设计的同时拥有全局静态变量?

密码是here

最佳答案

有几个选项。我首先想到的是 C++ 允许在多个翻译单元中定义类模板的静态数据成员:

template<class T>
struct dummy {
static int my_global;
};

template<class T>
int dummy<T>::my_global;

inline int& my_global() {return dummy<void>::my_global;}

链接器会将多个定义合并为一个。但是单独使用 inline 也可以提供帮助,而且这个解决方案要简单得多:

inline int& my_global() {
static int g = 24;
return g;
}

您可以将此内联函数放入头文件中,并将其包含在许多翻译单元中。 C++ 保证此内联函数返回的引用将始终引用同一对象。确保函数具有外部链接。

关于C++静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3744945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com