有几个C++类需要使用相同的静态方法和不同的实现

Gol*_*les 4 c++ design-patterns

我需要几个C++类来使用静态方法"register",但是寄存器的实现在这些类之间有所不同.

它应该是静态的,因为我的想法是用Lua"注册"所有这些类(当然只有一次).

显然我不能用静态纯虚函数声明一个接口.你们有什么建议我做的?简单是受欢迎的,但我认为某种模板可以工作.

我希望实现的例子

class registerInterface
{
public:
    static virtual void register() = 0; //obviously illegal
};

class someClass: public registerInterface
{
    static virtual void register()
    {
        //I register myself with Lua
    }
}

class someOtherClass: public registerInterface
{
    static virtual void register()
    {
        //I register myself with Lua in a different way

    }
}

int main()
{
    someClass::register();
    someOtherClass::register();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Hit*_*esh 6

根据你如何描述问题,我不清楚为什么你甚至需要在类上使用"虚拟静态方法".这应该是完全合法的.

class SomeClass {
  static void register(void) {
    ...
  }
}

class SomeOtherClass {
  static void register(void) {
    ...
  }
}

int main(int argc, char* argv[]) {
  SomeClass::register();
  SomeOtherClass::register();

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

删除RegisterInterface,我认为你不需要它.