2016-04-05 13 views
0

このコードが間違っていることを教えてください。修正するには?'std :: wstring {aka std :: basic_string <wchar_t>}'を非スカラー型 'UString {aka std :: basic_string <char>}'に変換します。

JNIEXPORT jstring JNICALL Java_COM_DEMO_TEST_SEND (JNIEnv 
*env, jclass c, jstring param){ 
    const char* strParam = env->GetStringUTFChars(param, 0); 
    UString data = s2ws(string(strParam)); 
    UString result = TEST::SEND(data); 
    return env->NewStringUTF(ws2s(result).c_str()); 
} 

エラーが発生しました。

error: conversion from ‘std::wstring {aka std::basic_string<wchar_t>}’ to non-scalar type ‘UString {aka std::basic_string<char>}’ requested 
    UString data = s2ws(string(strParam)); 
+0

「UString」とは –

+0

'#ifdef WIN32 typedef std :: wstring UString; #else typedef std :: string UString; #endif' – user1626038

+0

その後、 'WIN32'を設定せずにコードをコンパイルして、プロジェクトの設定を確認します。 –

答えて

2

実際にはエラーはかなり良好です。 std::stringを使用しようとしていますが、std::wstringがあり、コンパイラーは一方をもう一方に変換する方法を知らんしていません。

std::basic_stringの両方の特殊化であるという事実は、それらが交換可能であるということを意味しません。

関連する問題