C++ 静态成员 提示multiple definition

来源:互联网 发布:she候鸟 知乎 编辑:程序博客网 时间:2024/05/29 02:53

在业务开发中用到这样的场景,工具类中定义类一个成员对象,且为静态成员(非指针),在编译时提示重复定义,原来发现一时大意把静态成员再头文件中进行了初始化,

后改为在cpp中初始化后,问题解决。

与全局变量一个道理,编译器预处理时出现了多个定义造成的,全局变量除非是const常量否则也会出现重复定义现象,大同小异,但是仔细分析还是很多问题的。

详细参见这个帖子,喷的很好了已经:

http://bbs.chinaunix.net/thread-948722-1-1.html

http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=948796&page=1#pid6918349

http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=948722




同时,

在类内对静态成员初始化只可以是const成员保证唯一性,否则只能类外进行初始化,但是string对象不可以在类内初始化就算是const也不可以,这个涉及到string构造过程,详细不在此累述。



在此写下,备忘。(一天下来眼睛花了,遇到这个问题真的没看仔细,诸君莫要犯我这种错误,好low  哈哈)

0 0
原创粉丝点击