我收到语法错误和缺少类型

Posted

技术标签:

【中文标题】我收到语法错误和缺少类型【英文标题】:I get syntax error and missing type 【发布时间】:2010-12-11 16:19:07 【问题描述】:
 #include "MyArrayList.h"

 MyArrayList::MyArrayList()
 
size = 0;   
 

 NODE* MyArrayList::list_create(void *data)
 
NODE *node;
if(!(node=malloc(sizeof(NODE))))
    return (NODE*)NULL;
node->data=data;
node->next=NULL;
return node;


NODE *MyArrayList::list_add(NODE *node, void *data)

    NODE *newnode;
    newnode=list_create(data);
    newnode->next = node->next;
    node->next = newnode;
return newnode;

开启

  NODE* MyArrayList::list_create(void *data)
 


 NODE *MyArrayList::list_add(NODE *node, void *data)

myarraylist.cpp(8):错误 C2143:语法错误:缺少 ';'在'*'之前

myarraylist.cpp(8):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int

myarraylist.cpp(8): error C2065: 'data' : undeclared identifier

myarraylist.cpp(8): 错误 C2761: 'MyArrayList::NODE *MyArrayList::list_create(void *)' : 不允许成员函数重新声明

myarraylist.cpp(8):致命错误 C1903:无法从先前的错误中恢复;停止编译

它是一个链表

【问题讨论】:

你从编译器得到了什么exact错误信息? 错误信息是什么?你的代码应该做什么?如果您希望人们帮助您修复您的代码,您应该提供足够的详细信息让他们了解您的问题。 NODE的定义在哪里? 【参考方案1】:

你不应该在 C++ 中使用 NULL,而应该使用 0。而且你不需要强制转换空指针:任何指针类型都可以指向空。如果可以避免这些,则不应在 C++ 中使用 void 指针。事实上,如果可以避免这些,就不应该使用原始指针。如果可以使用new,则不应在 C++ 中使用malloc()。也就是说,如果赋值的左侧不是 void 指针,则必须转换 malloc() 的返回值:

node = (NODE*)malloc(sizeof(NODE))

【讨论】:

我应该使用什么而不是 void 静态或动态多态。编程到接口。 void* 没有说明类型。创建一个接口并调用它的函数。

以上是关于我收到语法错误和缺少类型的主要内容,如果未能解决你的问题,请参考以下文章

javascript 语法错误,缺少“;”

查询表达式中的语法错误(缺少运算符)“

语法错误:缺少 ';'编译 winnt.h 时在标识符“PVOID64”之前

OleDbException 未处理:查询表达式中的语法错误(缺少运算符)

查询表达式“@ID = @@IDENTITY”中的语法错误(缺少运算符)

SQLITE_ERROR SQL错误或缺少数据库(“SCHEMA”附近:语法错误)