Как проверить, является ли элемент массива класса пустым? - PullRequest
0 голосов
/ 13 декабря 2018

Первоначально я сделал

entity * Ptr[8] = { NULL, };

Но когда я приводил Ptr к другой функции по ссылке, используя

updateMap(&mapGrid, Ptr); //and
void updateMap(map * mapGridU, entity * entityPtr) //then
if (entityPtr[i] != NULL)// gives an error

Он говорит, что ни один оператор "! =" Не соответствует этим операндам сущности и int

1 Ответ

0 голосов
/ 13 декабря 2018

Оператор нижнего индекса опосредованно указывает операнд-указатель.Результатом является значение, указанное указателем, увеличенное на целочисленный операнд.

Поскольку entityPtr равно entity *, оно указывает на объект entity.Следовательно, операция entityPtr[i] приводит к lvalue типа entity.Поскольку вы сравниваете этот entity объект с NULL, должен существовать оператор неравенства, который может принимать entity и константу указателя NULL в качестве аргументов.Ваши ошибки говорят о том, что такого оператора не существует.

Я подозреваю, что ваше намерение было чем-то иным, чем сравнивать указанный объект entity с NULL.Я подозреваю, что вы намеревались сравнить какой-то указатель с NULL.

...