我有两个类,它们继承自某个虚拟基类
class A : public BaseClass {
public:
static int foo(){ ... };
static void bar(){ ... };
};
class B : BaseClass {
public:
static int foo(){ ... };
static void bar(){ ... };
};
我还有一个班 Worker
暴露给客户端,并使用这两个类的
class Worker{
public:
static void doFoo(){
int result = A::foo();
...
}
static void doBar(){
A::bar();
}
}
我可以用 A
在 Worker
类或 B
. 现在,如果我必须插入类 B
在 Worker
类中的所有函数,我将不得不对所有的 Worker
.
class Worker{
public:
static void doFoo(){
int result = B::foo();
...
}
static void doBar(){
B::bar();
}
}
有没有一种方法可以让我保持方法的静态性,而不是创建一个对象的 A
, B
或 Worker
类,并且仍然能够只在代码中做一些小的改动,并将插件从 A
到 B
.
我想过用模板(没有探索过),但我不想让用户知道 A
或 B
.
谢谢你
你可以做一个这样的类模板。
template <typename T>
class Worker_T {
public:
static void doFoo(){
int result = T::foo();
}
static void doBar(){
T::bar();
}
};
然后选择实际使用哪个类,你只需要选择以下其中一个:
using Worker = Worker_T<A>;
或
using Worker = Worker_T<B>;
和用户 Worker
不需要知道 A
或 B
.