如何将Handle <value>强制转换为bool </value>

时间:2014-02-19 03:09:56

标签: embedded-v8

我试过了:

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价值的合法途径?

2 个答案:

答案 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")是否确实是布尔值。