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

如果 vpInfo 有一个空值,Xcode 会标记该消息以警告这是一个错误,如果有,那么 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 回答