【发布时间】:2016-04-01 03:54:05
【问题描述】:
我尝试在 Visual Studio 2013 中构建 CRF++,并在最后一行出现此错误:
array_[begin + siblings[i].code].base =
value_ ?
static_cast<array_type_>(-value_[siblings[i].left]-1) :
static_cast<array_type_>(-siblings[i].left-1);
错误 C4146:一元减号运算符应用于无符号类型,结果 还没有签名
具体来说,它位于 darts.h 的第 189 行。
我在 Visual Studio 2015 中再次构建,然后没有错误。
如何在 Visual Studio 2013 中解决此问题?
【问题讨论】:
-
value_的类型是什么? -
@HappyCoder: array_type_ *value_;
-
而
array_type_被定义为? -
为什么
static_cast<array_type_>的东西如果已经array_type_一旦通过value_[...]取消引用,你上面说过的value_是array_type_*? -
@HappyCoder:模板类型可以是short、int或long。
标签: c++ visual-studio casting