两个c++程序,应该有同样的问题。但是1个报出这个问题的error,另一个却没有。这是为什么?

新手上路,请多包涵

碰到了和stackoverflow上类似的问题,stackoverflow上的这个问题。其中第2个复杂的程序,如何修改才能够使它报出和第1个简单的程序类似的错误?

回复
阅读 476
1 个回答

对于第一个错误,应该是很清晰的,在头文件里面定义了静态变量,所以在多次 include 的时候导致了重复定义。
至于说为什么第2个复杂的程序不报错,这里涉及到了一个相对比较小众的 C++模板的特性——编译器保证具有相同模板参数的模板只实例化一次。也就是说,具有相同模板参数的 class 中的静态变量只被实例化一次。所以第二个例子可以编译通过。
至于说让第2个程序报类似的错误,你只要不用模板就会有类似的错误。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏