Я пришел с Java-стороны, где, если вы хотите проверить, выделена ли определенная запись в ArrayList
, вы получаете ссылку на объект в ArrayList
и проверяете, является ли оно нулевым или нет.Как проверить, является ли объект, на который указывает указатель, null?
В основном я пытаюсь выполнить одно и то же. Вот упрощенная версия моего кода:
struct node
{
int count=0;
int nodeval=0;
bool valid=false;
};
bool operator==(const node* n,int val)
{
if (n->count==0&&n->nodeval==0&&n->valid==false)
if(val==NULL)
return true;
else
return false;
}
node* lookup(int val)
{
return &Table[val];
}
int main()
{
res=somevalue;
node* child=lookup(res);
if(child==NULL)
{
//do something
}
}
Вот мое понимание:
lookup()
собирается вернуть мне адрес избранной позиции в структуре Таблица данных. Я храню это у ребенка.- Проверка дочернего элемента для нулевого указателя не имеет смысла, потому что мы возвращаем правильную ссылку на ячейку памяти, чтобы перегрузить ее.
- В перегрузке
==
я проверяю, не изменилось ли каждое из полей, если оно не изменено и, следовательно, «нулевое сущность». Проблема в том, что оператору==
требуется один пользовательский объект для работы.
Вопросы:
- Что я неправильно в передних упомянутых шагов?
- Есть ли более простой способ проверить, не изменился ли объект, на который указывает указатель/null?
Почему вы перегружаете операторов? Просто проверьте, является ли указатель NULL или нет. Перегрузка оператора не требуется. Также - ** C++ не Java **.Не пытайтесь эмулировать Java-код или методы на C++. – PaulMcKenzie
@PaulMcKenzie ,, когда я делаю & Table [val] Я имею в виду адрес (Таблица 0 + val), и это происходит как выделенная память, и я возвращаю его, теперь как это поможет мне проверить ноль? – BigDataScholar
Что такое * Тип * Стол? – Galik