gpt4 book ai didi

c++ - C++ 和 D 之间的链接兼容性

转载 作者:IT老高 更新时间:2023-10-28 21:49:37 26 4
gpt4 key购买 nike

D轻松与 C 连接.

DC++ 的接口(interface)一样容易, 但是(这是一个很大的但是)C++需要非常微不足道。代码不能使用:

  • 命名空间
  • 模板
  • 多重继承
  • 混合使用虚拟和非虚拟方法
  • 更多?

我完全理解继承限制。然而,其余的感觉像是人为的限制。现在我不想使用 std::vector<T>直接,但我真的很想能够链接到 std::vector<int>作为外部模板。

C++ interfacing page有这个特别令人沮丧的评论。

D templates have little in common with C++ templates, and it is very unlikely that any sort of reasonable method could be found to express C++ templates in a link-compatible way with D.

This means that the C++ STL, and C++ Boost, likely will never be accessible from D.

诚然,我可能永远不需要 std::vectorD 中编码时,但我喜欢使用 QTboost .

那么有什么关系。为什么要表达不平凡C++ 这么难D 中的类(class)?添加一些特殊的注释或至少表达命名空间的东西不值得吗?


更新:来自 Walter Bright 的“D 正在开发命名空间支持” .

最佳答案

FWIW Qt 有一个积极开发的 D 绑定(bind):http://www.dsource.org/projects/qtd

我认为 boost 中的许多组件都与 C++ 高度相关,无法有意义地移植到其他语言。

使用例如如果您花时间编写转发给适当成员函数的常规(例如命名空间级别)函数,则 std::vector 是可能的。乏味,但负担得起(对于更高级别的组件;可能不适用于 std::vector)。

另外,我最近在标准库中检查了一个密封数组和密封二进制堆实现,它们使用引用计数、malloc/free 和确定性销毁而不是垃圾收集(参见 http://www.dsource.org/projects/phobos/browser/trunk/phobos/std/container.d)。其他容器将紧随其后。这些容器使用三种特定技术(在我即将发表的文章“密封容器”中描述)来实现确定性销毁,而不会影响程序安全性。

希望密封的容器将消除与 STL 容器链接的任何需要,即使对于无法承受垃圾收集的紧凑型应用程序也是如此。

关于c++ - C++ 和 D 之间的链接兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3024136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com