2016-06-23 1 views
0

おはよう。ChromeとIEを使用してFirebreath 2.0プラグインメソッドでconvert_castの動作に違いがある理由

私は私のfirebreath 2.0のプラグインで、次の方法があります:myclassObjで

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は、次のとおりです。

std::string B::mymethod(std::string tStr) 
{ 
    return tStr; 
} 

のstd ::文字列 "テスト" は筋力になると予想されるが、私の後ブラウザからget_stringを呼び出すと、動作の違いがあります。 Chromeを使用しているときに文字列が取得され、変換は正常です。 私はIEを使用していますが、私はret_reqでshared_ptrを取得し、私はそれから私の文字列を取得することはできません。その場合、私は変換で例外を取得します。私は私が間違ってやっている:)

P.S.を判断するのに役立ち

してください、それは問題ではない、私が取得しようとしているもの:std :: string、long、またはsmth else、chrome変換はOKですが、IEではretで取得するのはshared_ptrだけです。

実際、get_stringメソッドでmyclassObjへのポインタを取得したいのですが、プロキシクラスのためにスタックされています。だから、私はstd :: stringを使用してポインタを取得しようとしています。

答えて

0

実際に何が起こっているのかをデバッグする必要があります。 FireBreath 2のIEインターフェイスにバグがある可能性があります。私はそれが広範にテストされているとは思わないからです。もしそうなら、それを見つけて修正することができます。それがオープンソースの利点です!

オブジェクトをブラウザから戻すのではなく、渡す識別子を使用して、プラグイン側で地図などでオブジェクトを参照することをおすすめします。そうすれば、ブラウザのプロキシを通過するすべてのオーバーヘッドはありません

関連する問題