【发布时间】:2012-05-30 11:25:01
【问题描述】:
我想定义一些 gtkmm 类型的新子类,实现底层 GTK+ 对象的接口。然后,我想将它编译成某种 dll 并通过这个接口在纯 C 代码(GTK+,没有 gtkmm)中使用。有可能吗?
【问题讨论】:
-
结果必然是一个 C++ 类。无法从 C 中使用 C++ 类,但您当然可以围绕它编写 C 包装器。不过会有点迂回,不是吗?如果你想在 C 中使用它,为什么不直接用 C 编写呢?
-
因为 GTK+ 风格的继承会导致代码臃肿。此外,我想在新定义的类中使用 C++ 对象。
-
从技术上讲,无需编写任何额外的包装器就可以实现 - 我们只需要告诉 GTK+ 魔法层对象有多大,并告诉一些如何调用构造函数。问题是 - 如何以非 hacky 的方式来做(如果存在的话)。
-
“因为 GTK+ 风格的继承导致代码臃肿。”继承本质上是复杂的。所有这些“膨胀”也在 C++ 中发生,只是在引擎盖下。
-
当然可以,但是代码仍然更清晰。就我而言,开销不是问题。