c没有cpp文件的静态类变量
发布时间:2020-12-16 09:43:57 所属栏目:百科 来源:网络整理
导读:我有一个简单的类来存储传感器数据,可以概括为 class Data{ public: Data(){timestamp = Time::now(); id = sNextID++; data = 0; type = DATA_TYPE_UNKNOWN;} double data; Time timestamp; DataType type; private: static unsigned int sNextID;}; 我有一
我有一个简单的类来存储传感器数据,可以概括为
class Data { public: Data(){timestamp = Time::now(); id = sNextID++; data = 0; type = DATA_TYPE_UNKNOWN;} double data; Time timestamp; DataType type; private: static unsigned int sNextID; }; 我有一个头文件,声明了一堆类似的数据类.鉴于类的简单性,不需要实现cpp文件. 问题是,如果没有实现文件,我该如何初始化sNextID?我在某个地方看到它默认为0这样会好的,虽然依赖它似乎有点hackish.但更重要的是,如果没有在某个地方初始化它,链接器就会抱怨未定义的引用. 解决方法
使用
inline function(独立或会员):
inline unsigned &sNextID() { static unsigned data = 0; return data; } 或类模板(它的静态can be in header file的定义): template<typename tag> struct Foo { static unsigned sNextID; }; template<typename tag> unsigned Foo<tag>::sNextID=0; 更新:在C 17中可以使用内联变量: struct Foo { static inline unsigned sNextID; }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |