Добрый день.Почему существуют различия в поведении convert_cast в модуле firebreath 2.0 с использованием Chrome и IE
У меня есть следующий метод в моем 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;
});
}
MyMethod в myclassObj является:
std::string B::mymethod(std::string tStr)
{
return tStr;
}
станд :: строка "тест", как ожидается, будет в Силе, но после того как я вызов get_string из браузера, есть разница в поведении: Когда я использую Chrome, я получаю строку в ret и преобразование в порядке. Когда я использую IE, я получаю shared_ptr в ret, и я не могу получить от него свою строку. В этом случае я получаю исключение в преобразовании.
Пожалуйста, помогите мне определить, что я делаю неправильно :)
P.S. Не имеет значения, что я пытаюсь получить: std :: string, long или smth else, в chrome-преобразовании нормально, но в IE в ret я получаю только shared_ptr.
На самом деле, я хочу получить указатель на myclassObj в методе get_string, но я застрял из-за прокси-классов. Итак, я пытаюсь получить указатель, используя std :: string.