0

このコードの何が問題になっていますか?

typedef ::jace::proxy::java::lang::String JString;
JString toString(const std::wstring& p)
{

    JString strVal(p.c_str());
    return strVal;
}

unhandled exception, jace::VirtualMachineShutdownErrorp.c_str()をJString変数strVal に渡した場合、例外がスローされます。

4

1 に答える 1

3

この例外が発生する理由は、wstring :: c_str()が返されるのconst wchar_t*に対し、jace::Stringクラスにはwchar_t*を受け入れるコンストラクターがないためです。最も近いのはString( ::jace::JArray< ::jace::proxy::types::JChar > p0 );、と同等と見なすことができるものchar*です。

問題の回避策は次のようになります。

JString toString(const std::wstring& p)
{
    std::string s;
    s.assign( p.begin() , p.end() );
    JString strVal( s );
    return strVal;
}

これは効率的なソリューションではありませんが、機能します。

于 2012-09-25T13:33:26.327 に答える