gpt4 book ai didi

c++ - 我可以在 header 中定义和声明extern对象的任何方式吗?

转载 作者:行者123 更新时间:2023-12-01 14:54:14 24 4
gpt4 key购买 nike

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

如果我只是在 header 中声明它,则会收到“多个定义”错误,如果我使用extern,则必须创建一个cpp文件来真正声明它。

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

附言由于模板类中的静态成员可以(仅)在 header 中声明,因此它如何工作?

最佳答案

如@ M.M所述,如果您使用的是inline或更高版本,则可以使用C++17声明。

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

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

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

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

关于c++ - 我可以在 header 中定义和声明extern对象的任何方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59188026/

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