我试过了:
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
价值的合法途径?
答案 0 :(得分:2)
如果您想将arg [0]转换为Local&lt; Value&gt;到本地&lt; Boolean&gt;,然后这将工作:
Local<Boolean> B = arg[0].ToBoolean();
最糟糕的情况是,您将获得一个空的Local&lt; Boolean&gt;。如果你想要一个布尔,那么使用:
bool B = arg[0].BooleanValue();
答案 1 :(得分:1)
Handle<Value> Val
使用Val->BooleanValue()
。您可以使用Val
检查Assert(Val->IsBoolean(), "Expected boolean")
是否确实是布尔值。