Исправить ошибку "не найден бинарный оператор" - C (СИ)

Узнай цену своей работы

Формулировка задачи:

if (r!=NULL)
ругается на то, что в скобках и пишет: error C2678: бинарный "!=": не найден оператор, принимающий левый операнд типа "TreeNode" (или приемлемое преобразование отсутствует). Как исправить ошибку, как проверить, чтоб элемент не был пустым?
struct TreeNode
{   int inf;
    struct TreeNode *left, *right;
};

Решение задачи: «Исправить ошибку "не найден бинарный оператор"»

textual
Листинг программы
struct TreeNode r; //r - готовая структура с неинициализированными полями.
//В таком виде ее никак не проверишь, по-этому лучше инициалзировать так:
memset (&r, 0, sizeof(struct TreeNode)); //а уже после этого проверять можно, например, так:
if(r.left || r.right || r.inf){/*что-то в этом есть...*/}
struct TreeNode *r; //неинициализированный указатель - не проверить никак
struct TreeNode *r = 0; //проверять так:
if(*r){/*инициализирован*/}

Объяснение кода листинга программы

  1. Объявляется структура TreeNode с полем r.
  2. Указатель r инициализируется как NULL (или как 0).
  3. Функция memset используется для инициализации структуры TreeNode нулями.
  4. Если поля left, right или inf структуры TreeNode не равны NULL, то это означает, что структура была инициализирована.
  5. Поле r структуры TreeNode не инициализируется и остается неинициализированным.
  6. Указатель r инициализируется как NULL (или как 0).
  7. Если указатель r не равен NULL, то это означает, что указатель был инициализирован.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы