JS相等运算符(如===)是否可以使用embind类型
Can the JS equality operators (like ===) work with embind types?
假设我有一些Emscripten绑定,如下所示:
class_<MyNode>("MyNode")
.constructor<>()
.function("getParentNode", &MyNode::parentNode, allow_raw_pointers());
当我在JS中运行以下代码时,我得到false
,但我希望它是true
:
node.getParentNode() === node.getParentNode()
我猜这是因为Emscripten将每个函数调用的结果包装在一个新的JS对象中,即使JS对象指向相同的底层C++对象。
也就是说,在Emscripten中,JS===
或==
是否有一些技巧可以在绑定类型具有相同底层原始指针值的情况下返回true?
可能不会。来自MDN文档中的严格相等运算符:
如果两个操作数都是对象,则仅当它们引用同一对象时才返回
true
。
您可能对这个SO线程感兴趣,询问如何";"过载";相等运算符
相关文章:
- 是否可以使C++类成为Objc类的委托
- 是否可以使一个类成为两个不同层次结构的子类?
- 是否有编译器标志可以使较新的 gcc 版本像旧版本一样构建
- 是否可以使整数仅收到一个单个数字而不是两个接收输入
- 是否可以使 std 容器使用默认运算符为新?
- 是否可以使头文件使文本居中?- 在控制台中
- 是否有一种方法可以使此C 14递归模板在C 17中短
- 如果必须在同一向量上写入线程,是否可以使用线程
- 对于具有两个模板化变量的模板化类,是否可以使一个 var 引用另一个 var
- 语法错误,也想知道我是否可以使这段代码更有效率
- 是否可以使结构直接返回值
- 是否可以使函数模板从函数引用中获取“decltype”
- 是否可以使您的Qt应用程序在运行时不锁定文件
- 是否有 g++ 的标志可以使这些错误更易于阅读
- 是否可以使函数模板对不适当的类型而不是错误执行默认操作
- 是否可以使程序的执行跳过 fprintf-语句/如何创建我自己的 fprintf 函数
- 是否有一个内置函数可以使线程的一部分不并发运行
- 传递给std::basic_string的分配器是否可以使其方法为虚拟的
- 是否可以使类路径成为JNI库中的@rpath
- 是否可以使指向派生类对象的基类指针访问在派生类中声明的新成员