美好的一天。
我的firebreath 2.0插件中有下一个方法:
void A::get_string(const FB::JSObjectPtr& myclassObj)
{
FB::variantPromise a = myclassObj->Invoke("mymethod", FB::VariantList{ "test" });
a.then<void>([this](FB::variant ret) {
std::string Str = ret.convert_cast<std::string>();
return;
});
}
std::string B::mymethod(std::string tStr)
{
return tStr;
}
std :: string&#34; test&#34;预计将在Str中,但在我从浏览器调用get_string之后,存在行为差异: 当我使用Chrome时,我会在ret中获得字符串并且转换正常。 当我使用IE时,我在ret中得到shared_ptr而我无法从中获取我的字符串。在这种情况下,我在转换中获得异常。
请帮我确定我做错了什么:)
P.S。没关系,我想要得到的东西:std :: string,long或者smth else,在chrome转换中没问题,但在IE中我只得到shared_ptr。
实际上,我想在get_string方法中获得指向myclassObj的指针,但是因为代理类而被卡住了。所以,我试图使用std :: string来获取指针。
答案 0 :(得分:0)
你必须调试实际发生的事情; FireBreath 2的IE界面可能存在错误,因为我认为它没有经过广泛测试。如果是这样,你可能会发现并修复它 - 这是开源的优势!
不是将对象从浏览器传回来,而是建议使用您传入的某种标识符,然后在插件端使用地图或其他内容查找对象。这样你就没有通过浏览器代理的所有开销