![]() |
1
4
出现问题的原因是您的头文件中有这一行:
因此,它最终出现在每个翻译单元中。相反,您需要将此存储移到一个仅编译一次的.cpp源文件中,或者移到自己的共享库中。那么只有一个实例
你也可以搬家
如果你有C++ 17或更高版本,你也可以尝试:
虽然语言不能保证(甚至提到)当您跨共享库边界使用这个新特性时会发生什么,但它确实在我的机器上工作。 |
![]() |
2
1
如果不要求ID是连续整数,则可以使用模板静态成员的地址作为ID。此方法的好处是不需要任何运行时初始化(使用 static initialization ):
你也可以做到
|
![]() |
3
1
如果您不关心顺序ID,请使用函数的地址作为标识符。
然后
|
![]() |
notamaster · 匿名命名空间中的变量声明和其他位置的定义 2 年前 |
![]() |
sovesti · 参数较少的模板函数中的演绎 2 年前 |
![]() |
Lingxi · 使用内联静态数据成员有任何潜在的陷阱吗? 6 年前 |
![]() |
Quuxplusone · 销毁不可销毁的基类? 6 年前 |