0

非同期モジュールを書いていますが、配列構造を渡すことができません。助けてください。それがエラーが表示されます。それを避ける方法は?エラー C2440: '=': 'v8::Handle' から 'v8::Array *' に変換できません

struct Async {
    Handle<v8::Array> result;
}
void wmiWorker(uv_work_t* req) {
    Async* request = (Async*)req->data;
    *(request->result) = getArray(1);
}
Handle<Array> getArray(int x) {

  HandleScope handle_scope;
  Handle<Array> array = Array::New(3);

  if (array.IsEmpty())
    return Handle<Array>();

  array->Set(0, Integer::New(x));
  return handle_scope.Close(array);
}
4

1 に答える 1

1

あなたのライン

*(request->result) = getArray(1);

Handle<Array>*(Handle<Array>)(つまり) を割り当てますArray*が、これは無効です。

ただし、それでも、考慮していない重要な要素があります。関数wmiWorkerは別のスレッドで実行されています。NodeJS と V8 では、JS の単一スレッドの実行のみが許可されます。実行しようとしているのは、別のスレッド内に JS 配列を作成することです。

代わりに、ベクトルか何かを作成し、work コールバックのafter_workコールバック内から V8 配列を生成する必要があります。

于 2013-06-07T15:19:03.153 に答える