warning LNK4006 这个烂问题终于搞掉了

就写了一个简单的Timer计时器类,单独编译完全没问题,警告什么的都没有,但是一link就出岔子,每次都提示 xxx.obj : warning LNK4006: "private: static class std::vector > Nomad::Timer::mTimers" (?mTimers@Timer@Nomad@@0V?$vector@PAVTimer@Nomad@@V?$allocator@PAVTimer@Nomad@@@std@@@std@@A) 已在 NomadTimer.obj 中定义;已忽略第二个定义。

除了有个警告很碍眼其实暂时也没发现什么很严重的问题,但是每次都警告我很不爽。。。

google了好久都没找到解决办法,其他人发出的帖子一般都是说设置问题之类,但是我也按照他们说的改过设置了,就是不对头,后来自己琢磨琢磨,警告中说重复定义,msdn上面也说去除多余的定义就ok了,回头看看自己的代码,是不是因为static std::vector mTimers的定义也放在头文件的缘故?这样其他文件包含这个头文件的时候就会找到这个定义了,多个文件包含当然会发现多个定义了,于是将这个static成员放cpp中定义,哗~~整个世界清静了。。。

你可能感兴趣的:(C/C++)