оператор new (ошибка: ожидаемое выражение перед структурой) - PullRequest
0 голосов
/ 28 февраля 2011
struct node* NewNode(int data)
{
  struct node* node = new(struct node);
  node->data = data;
  node->left = NULL;
  node->right = NULL;
  return(node);
}

Я получаю эту ошибку в первой строке функции. Не могу понять, что не так? Благодаря.

Ответы [ 2 ]

3 голосов
/ 28 февраля 2011

Ключевое слово "new" указывает на то, что это C ++.В C ++ конструкция struct TYPENAME в значительной степени устарела, вместо этого вы можете просто использовать TYPENAME.C-способ определения типа имени из именованной структуры неявно присутствует в C ++.

node* NewNode(int data)
{
  node* pnode = new node;
  pnode->data = data;
  pnode->left = NULL;
  pnode->right = NULL;
  return(pnode);
}

должен работать просто отлично , если это C ++.Обратите внимание, что использование одного и того же имени для типа и переменной не очень хорошая идея.Некоторое соглашение об именах (венгерское или что-то еще) помогает.

2 голосов
/ 28 февраля 2011

Этот код прекрасно компилируется при Пробная версия Comeau :

#define NULL 0

struct node
{
    int data;
    struct node* left;
    struct node* right;
};

struct node* NewNode(int data)
{
  struct node* node = new(struct node);
  node->data = data;
  node->left = NULL;
  node->right = NULL;
  return(node);
}
...