1

我试过这个:

Handle<Boolean> B = arg[0];

编译器:

fatal error: assigning
    to 'v8::Boolean *volatile' 
    from incompatible type 'v8::Value *'
TYPE_CHECK(T, S);

我:

Handle<Boolean> B = Handle<Boolean>::Cast(arg[0]);

编译器:

fatal error: no member named 'Cast' in 'v8::Boolean'
    return Handle<T>(T::Cast(*that));

我:

bool B = Handle<Number>::Cast(js_call(callback, 1))->Value();

编译器:

ok

但这对我来说似乎是一种黑客行为,有没有一种合法的方式来获得boolean价值?

4

2 回答 2

2

如果您想将 arg[0] 作为 Local<Value> 转换为 Local<Boolean>,那么这将起作用:

Local<Boolean> B = arg[0].ToBoolean();

最坏的情况是,你会得到一个空的 Local<Boolean>。如果你想要一个布尔值,那么使用:

bool B = arg[0].BooleanValue();
于 2014-03-27T20:40:16.503 回答
1

Handle<Value> Val使用Val->BooleanValue()。您可以使用 . 检查是否Val确实是布尔值Assert(Val->IsBoolean(), "Expected boolean")

于 2014-03-27T20:53:57.337 回答