0

XCode 4.6 でコードを分析すると、この警告が表示されますが、表示されません。

    VanishingPointInfo* vpClosestToCenterLine = NULL;
    for (vector<VanishingPointInfo>::iterator vpInfo = lineCrossings.begin(); vpInfo != lineCrossings.end(); vpInfo++)
    {
        if (vpClosestToCenterLine == NULL || vpInfo->diffToMiddle < vpClosestToCenterLine->diffToMiddle)
        {
            vpClosestToCenterLine = &(*vpInfo);
        }
    }

XCode は、 へのアクセスがポインタvpInfo->diffToMiddleの逆参照になると訴えます。NULLしかし、それはイテレータです...

4

1 に答える 1

0

Xcode は、vpInfo に null 値がある場合はエラーであることを警告するメッセージにフラグを立てています。そうである場合、vpInfo 内のサブ構造はすべて無効です。警告を修正するには、サブ構造へのアクセスを必要とするロジックを実行する前に存在チェックを配置します。....

   if (vpInfo) {
        VanishingPointInfo* vpClosestToCenterLine = NULL;
for (vector<VanishingPointInfo>::iterator vpInfo = lineCrossings.begin(); vpInfo != lineCrossings.end(); vpInfo++)
{
    if (vpClosestToCenterLine == NULL || vpInfo->diffToMiddle < vpClosestToCenterLine->diffToMiddle)
    {
        vpClosestToCenterLine = &(*vpInfo);
    }
}}
于 2013-07-27T00:57:09.057 に答える