我正在写一个完全基于模板的库,所以我没有任何cpp文件。现在我想声明一个全局变量,然后我意识到我无处可去。
如果仅在标头中声明它,则会出现“多个定义”错误,如果使用extern
,则必须创建一个cpp文件来真正声明它。
那么,有什么方法可以在标头中声明全局变量?
PS因为模板类中的静态成员可以(仅)在标头中声明,所以它如何工作?
如@MM所述,inline
如果您在C++17
以上级别,则可以使用声明。
但是,如果不是这种情况,则可以声明inline
函数,该函数返回对static
变量的引用,如下所示:
inline int& getData() {
static int data;
return data;
}
然后,在您的.cpp文件中(以及标头内的任何函数体内),您都可以像这样简单地调用它int& data = getData()
。
附带说明一下,如果要确保仅创建一次全局对象并且不会意外复制它,则最好使用信号符号代替。全局变量更像是c风格的,在c ++中并不是真正的好习惯。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句