new运算符(错误:struct之前的预期表达式)

时间:2011-02-28 06:31:10

标签: c++ new-operator

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

我在函数的第一行收到此错误。无法弄清楚什么是错的? 感谢。

2 个答案:

答案 0 :(得分:3)

“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 ++,

应该可以正常工作。请注意,对类型和变量使用相同的名称不是一个好主意。一些命名约定(匈牙利语或任何东西)有帮助。

答案 1 :(得分:2)

此代码在Comeau try-it-out下完全合并:

#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);
}