如何在 JavaScript 中继承 C++ 类?

Posted

技术标签:

【中文标题】如何在 JavaScript 中继承 C++ 类?【英文标题】:How to inherit a C++ class in JavaScript? 【发布时间】:2011-03-17 16:28:46 【问题描述】:

我正在嵌入 SpiderMonkey 以使我的 C++ 库可编写脚本。为了使其可扩展,我需要定义一个继承库的一个 C++ 基类的新类 (javascript)。

有没有示例向我展示如何使用 SpiderMonkey 做到这一点?

【问题讨论】:

你看过这个:egachine.berlios.de/embedding-sm-best-practice/… 吗? 感谢您的评论。我以前读过那篇文章,但我没有找到我的问题的解决方案。我的问题不是映射现有 C++ 类的映射继承。就我而言,我希望我可以在我的 Javascript 代码中对现有的 C++ 类进行子类化,并在我的 C++ 程序中使用它。非常感谢。 错误...不要那样做。一个可能不应该从库类继承;相反,通过组合让你的类可用。 是的,我正在考虑提供一个可以调用 Javascript 回调函数的 C++ 可编写脚本的基类。不确定这是否正是您的意思:) 非常感谢。顺便说一句,欢迎任何例子。 两种语言之间继承的概念不一样,所以我不太清楚你的意思......无论如何,检查这个crockford.com/javascript/inheritance.html 【参考方案1】:

我不知道这是否可能,但感觉最好用 JavaScript 为 C++ 库中的类编写 wrapper class。

【讨论】:

【参考方案2】:

我认为您不能在 SpiderMonkey/JavaScript 中子类化 C++ 类并在其余 C++ 代码中透明地使用它。但是,您可以在 C++ 中创建一个包装类,将其工作委托给几个 JavaScript 类/函数。如果您使 C++ 类的可配置性足以满足您的情况。 JSAPI User Guide 页面中解释了从 C 调用 JavaScript 代码和从 JavaScript 调用 C 代码(我想你已经阅读了那个)。

【讨论】:

以上是关于如何在 JavaScript 中继承 C++ 类?的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中继承友谊?

C++中继承类的构造函数

如何在C++中继承后覆盖基类的成员

为啥在 Qt 中继承 QWidget 类时出现内存泄漏

C++中继承与多态

C++和Java中继承的个人感觉