私のプロジェクトには次の2つの機能がありました。
char* V8StringToChar(v8::Handle<v8::String> str);
char* V8StringToChar(v8::Local<v8::Value> val);
私はそれらを次のように変換しました:
template <class T>
class ArrayDeleter {
public:
void operator () (T* d) const
{ delete [] d; }
};
std::shared_ptr<char> V8StringToChar(v8::Handle<v8::String> str);
std::shared_ptr<char> V8StringToChar(v8::Local<v8::Value> val);
体を
std::shared_ptr<char> V8StringToChar(Handle<String> str) {
int len = str->Utf8Length();
char* buf = new char[len + 1];
str->WriteUtf8(buf, len + 1);
return std::shared_ptr<char>(buf, ArrayDeleter<char>());
}
std::shared_ptr<char> V8StringToChar(Local<Value> val) {
return V8StringToChar(val->ToString());
}
そして、それらのすべての使用法は(&*V8StringToChar(whatever))
.
そして、それは完璧に構築されます。
そして、それは実行時エラーを引き起こしています。
これが失敗する可能性がある場合はありますか?良い解決策を提供してください。