我知道三元运算符有一些令人惊讶的限制,但我有点困惑,这无法为我编译:
void foo(bool b)
{
int* ptr = ((b) ? NULL : NULL);
}
显然,这是显示问题所需的最低限度。错误是:
[BCC32 Error] Unit11.cpp(20): E2034 Cannot convert 'int' to 'int *'
编译器是低于 100% 的 Embarcadero C++Builder 2010,因此编译器错误远非不可能......
注意:修改括号以避免混淆我的意图。
注意 2:我对自己是如何得出这个结构感到有些困惑,所以这是我的借口:我在类似 的行上遇到了一些编译错误a = b? c : d
,其中 b、c 和 d 都是复杂的表达式. 为了缩小范围,我将c
andd
替换为NULL
s 以检查是否b
是罪魁祸首。在这一点上,一切都在手推车中陷入了困境。