利用worker类中不同类的静态函数进行实验。

问题描述 投票:0回答:1

我有两个类,它们继承自某个虚拟基类

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();
       }
}

我可以用 AWorker 类或 B. 现在,如果我必须插入类 BWorker 类中的所有函数,我将不得不对所有的 Worker.

class Worker{
    public:
       static void doFoo(){
           int result = B::foo();
           ...
       }

       static void doBar(){
           B::bar();
       }
}

有没有一种方法可以让我保持方法的静态性,而不是创建一个对象的 A, BWorker 类,并且仍然能够只在代码中做一些小的改动,并将插件从 AB.

我想过用模板(没有探索过),但我不想让用户知道 AB.

谢谢你

c++ oop static-methods design
1个回答
1
投票

你可以做一个这样的类模板。

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 不需要知道 AB.

© www.soinside.com 2019 - 2024. All rights reserved.