为什么报这个错?

来源:百度知道 编辑:UC知道 时间:2024/05/10 04:40:00
我用C++,想让函数返回一个类的实例:
typedef int DataType;
class SeqList {
DataType element[100];
int n;
}PSeqList;
PSeqList createNullList_seq(void) {
PSeqList palist;
palist = (PSeqList)malloc(sizeof(class SeqList));
if (palist != NULL)
palist -> n = 0;
else
printf("Out of Space!\n");
return (palist);
}
createNullList_seq(void)那一行总是报错:
"PSeqList" does not name a type.
怎么回事?怎么解决?

恩,同意楼上的 PSeqList是一个实例对象,不是一个类型,用他作为函数的返回值肯定不行的,若要真这样用,也可改为:
typedef class SeqList{
DataType element[100];
int n;
}PSeqList;

把它声明为 SeqList 的别名

将此语句上面的代码
class SeqList {
DataType element[100];
int n;
}PSeqList;

中的 class 改为 struct

当然了class SeqList {
DataType element[100];
int n;
}PSeqList;
说明PSeqList只是一个对象啊,不是类,类为SeqList;
况且窃以为很少有人在类声明后面加对象,只有struct才用。

解决方法就是把PSeqList改成SeqList;并且在类定义里面加上createNullList_seq()函数的声明;觉得楼主既然写C的东西就不要用C++的Class关键字,你的语法格式就是错误的。