Как может этот простой тест на равенство указателей потерпеть неудачу? - PullRequest
0 голосов
/ 26 июня 2009
void FileManager::CloseFile(File * const file)
{
    for (int i = 0; i < MAX_OPEN_FILES; ++i)
    {
        if ((_openFiles[i] == file) == true)
        {
            _openFiles[i] == NULL;
        }
    }
...

_openFiles является частным членом FileManager и представляет собой просто массив File * 's
Когда точно такой же тест выполняется в окне Immediate, я получаю результат 1!?!

РЕДАКТИРОВАТЬ == true было добавлено просто как проверка работоспособности !!

Ответы [ 2 ]

4 голосов
/ 26 июня 2009

У вас есть

 _openFiles[i] == NULL;

должно быть

 _openFiles[i] = NULL;

2 голосов
/ 26 июня 2009

Недостаточно кармы, чтобы добавить комментарий, но если ответ cma был верным (условное задание должно быть заданием), то мне хотелось бы, чтобы исходное сообщение не было исправлено или меньше всего было записка, что это было исправлено. Я долго смотрел на нее, пытаясь найти ошибку, прежде чем сдаться и прочитать ответы.

Всем, кто может, не стесняйтесь удалять этот «ответ».

...