C++の理解が間違っているかどうかはわかりません。私はそれを読んだことがあります.1)ゼロ以外の値はすべてTRUEと等しく、ゼロはFALSEと等価です。 2)ヌルポインタはゼロとして格納されます。C++のゼロ(NULL)ポインタはfalseを返すはずですか?
しかし、このようなコード:
void ViewCell::swapTiles (ViewCell *vc) {
ViewTile *tmp = vc->tile();
[stuff ...]
if (tmp) addTile(tmp);
}
は私にNULLポインタを参照解除するからセグメンテーション違反を与えるが、
if (tmp != 0) addTile(tmp);
が正常に動作します。どんな考え?
ハードウェアのヌルポインターをゼロとして表す必要はありませんが、コンパイラーはこの問題を取り除きます。 –