D
可以轻易地与C
进行接口。
D
与C++
的接口同样容易,但是(这是一个很大的限制),C++
需要非常简单。代码不能使用:
- 命名空间
- 模板
- 多重继承
- 将虚拟方法与非虚拟方法混合使用
- 还有更多?
我完全理解继承的限制。然而,其他的东西感觉像是人为的限制。现在我不想直接使用std::vector<T>
,但我真的希望能够链接到std::vector<int>
作为外部模板。
C++接口页面有这样一个特别令人沮丧的评论。
D模板和C++模板几乎没有任何共同之处, 而且很难找到任何合理的方法来表达 C++模板以与D兼容的方式进行链接。
这意味着C++ STL和C++ Boost可能永远无法从D中访问。
诚然,在使用D
编码时,我可能永远不需要std::vector
,但我很想使用QT或boost。
那么问题来了。为什么在D
中表达非平凡的C++
类如此困难?添加一些特殊注释之类的东西来表示至少命名空间是否值得这样做?
更新:
"D正在处理命名空间支持" 来自 Walter Bright。