强制重新实现继承类中的静态函数

pac*_*222 5 c++

我有一个带有插件(动态库)的C++程序.在主程序中,我想执行一个静态函数来检查我是否可以创建这种类型的对象.

没有动态库的示例(不需要理解问题):

#include "libs/parent.h"
#include "libs/one.h"
#include "libs/two.h"

int main(int argc, char * argv[])
{
    Parent* obj;

    if (One::match(argv[1]))
        obj = new One();
    else if (Two::match(argv[1]))
        obj = new Two();
}
Run Code Online (Sandbox Code Playgroud)

现在,我有一个名为Parent的接口类.所有插件都继承自此类.理想情况下,我在Parent命名匹配中有一个虚拟静态函数,并且所有插件都需要重新实现此函数.

这段代码的问题是我不能用C++做静态虚函数,所以我不知道如何解决这个问题.

对不起英语,我尽我所能

Fyo*_*kin 5

你在这里有经典的工厂模式.您想要创建一个名为的接口IPluginFactory,该接口将具有两个方法 - match并且create(或者,可选地,在单个方法中将它们组合在一起).然后,每个插件DLL都有一个实现此接口的类.

    Parent obj;
    IPluginFactory *one = new OneFactory();
    IPluginFactory *two = new TwoFactory();

    if (one->match(argv[1]))
        obj = one->createObj();
    else if (two->match(argv[1]))
        obj = two->createObj();
Run Code Online (Sandbox Code Playgroud)