【发布时间】:2017-07-10 19:44:27
【问题描述】:
想象两个类,StaticFoo 和 NonStaticFoo,它们相同,除了类成员在 StaticFoo 中是静态的,但在 NonStaticFoo 中不是。
简单例子:
class StaticFoo {
static void bar();
static int v;
};
class NonStaticFoo {
void bar();
int v;
};
是否可以分解出模板类Foo 以避免代码重复?
这样人们就可以使用类似的东西
using StaticFoo = Foo<true>;
using NonStaticFoo = Foo<false>;
【问题讨论】:
-
“静态类”在 C++ 中不是很好的做法。使用命名空间。
-
为什么要这样做?您要解决的实际问题是什么?请花一些时间阅读 the XY problem 并思考您的问题是否适合它。
-
@Someprogrammerdude 您可以将其视为给定类型的
template<typename T>Registrator 类,该类目前在我的代码库中的任何地方都静态使用,但我想慢慢地转换为非静态类. -
我不明白这有什么意义,静态和非静态的东西根本不同,它不是增量差异
-
暂别我所说的,提供一个示例用例。例如,全局计数器和本地计数器示例在语义上有很大差异,您需要重写很多东西。