1. 实现
无侵入设计,把任意类变成singleton:
1 | template<typename DataType, int instanceId = 0> |
因为是模板,static变量的定义可放头文件,c++编译器对每个实体类的static变量仅定义一次。
如果需要多个实例,可以为instanceId赋不同的值(如下),否则忽略。
1 | class A{}; |
2. 使用注意
后来碰到的问题,析构顺序需要控制,当时是通过调整链接顺序解决。现在想想,更好的是at_exit,main前先全声明一遍,逆序析构。