C++ C++;插件的多态基类层次结构设计

C++ C++;插件的多态基类层次结构设计,c++,plugins,dll,linker,polymorphism,C++,Plugins,Dll,Linker,Polymorphism,我想在我的项目中有一个基于DLL的插件系统。每个插件都应该实现我的应用程序提供的抽象接口。在我的应用程序中,我处理通过基本多态类智能指针(这是一个类,它实际上提供了接口)在不同插件中产生的所有类层次结构实例 这是我的多态基类定义,又名抽象接口,它放在头文件中,我只想为插件开发人员提供 class ISomeInterface{ public: virtual ~ISomeInterface(); // need for base polymorphic class

我想在我的项目中有一个基于DLL的插件系统。每个插件都应该实现我的应用程序提供的抽象接口。在我的应用程序中,我处理通过基本多态类智能指针(这是一个类,它实际上提供了接口)在不同插件中产生的所有类层次结构实例

这是我的多态基类定义,又名抽象接口,它放在头文件中,我只想为插件开发人员提供

class ISomeInterface{
    public:
        virtual ~ISomeInterface(); // need for base polymorphic class
            ...                  // other methods, including pure virtual
    private:
            ...

    };
所以我至少需要为析构函数添加一个实现。如果我把它放在相应的源文件中,它会导致我另外向插件开发人员提供这个文件或编译库

另一方面,我可以将析构函数实现放在头文件中,但还有另一个问题。我在我的应用程序插件中嵌入了几个不同的源文件,使用这个头文件。当我试图编译它时,我将得到链接器错误,因为我的应用程序对象文件中存在名称冲突


有什么好的做法吗?

将成员函数的定义放在类声明中可以让您在不同的文件中包含头文件,而不会出现符号重新定义问题

class ISomeInterface{
    public:
        virtual ~ISomeInterface()
        {
            ...
        }

    private:
            ...

    };

只要在那里放一个内联析构函数,通常效果很好。