如何扩展您没有源代码的类?

时间:2015-07-11 18:08:38

标签: c++ oop c++11 shared-libraries

我有一个问题,我不知道如何开始解决这个问题。 我是用C ++做的。

假设我们有一些可执行程序(UNIX平台),我们可以通过输入my_program来运行该程序。参数在这里有4个类。每个类都必须扩展类,这是用目标程序(在my_program中)编写的。

所以,让我们说在my_program中我们有A,B,C和D类。用户知道他必须扩展这个类,所以他创建了四个子类。

class A1 : public A { ... }
class B1 : public B { ... }
class C1 : public C { ... }
class D1 : public D { ... }

这可能吗? A,B,C和D类在my_program中,所以他能以某种方式扩展它们吗?

1 个答案:

答案 0 :(得分:1)

C ++不支持这种类型的继承。其他语言,如C#允许这样做。

虽然您可以编写这种派生类,但是:

  • 基类的方法(尤其是ctor / dector)从DLL或EXE导出;
  • 您有基类定义的标题;
  • 您使用的DLL使用相同的编译器和相同版本的编译器。

在这种情况下,您可以编写包含派生类的应用程序。这将是一个单独的二进制文件。它会将DLL / EXE加载到其地址空间中,并在需要时调用基类的方法。这是可能的,因为它们应该导出,因为第一个项目符号需要它们。