問題:
關於error C2143: syntax error : missing ';' before '<class-head>' 這個錯誤及解決方案。
解釋:
這句話的意思就是在類的前面少加了“;”。
錯誤碼:
#include <iostream>
using namespace std;
#define maxsize 100
typedef int Datetype
class sequenlist
{
private:
DateType data[maxsize];
int len;
public:
void initiate();
int length();
int insert(DateType x, int i);
int delet(int i);
int locate(DateType x);
DateType get(int i);
};
void sequenlist::initiate()
{
len = 0;
}
int sequenlist::length()
{
return len;
}
int sequenlist::insert(DateType x, int i)
{
int j;
if (len >= maxsize) {
cout << "overflow!\n";
return 0;
} else if ((i < 1) || (i > len + 1)) {
cout << "position is not correct!\n";
return 0;
} else {
for (j = len; j >= i; j--)
data[j] = data[j - 1];
len++;
return 1;
}
}
int sequenlist::delet(int i)
{
int j;
if ((i < 1) || (i > len)) {
cout << "position is not corrcet!\n";
return 0;
} else {
for (j = i; j < len; j++)
data[j - 1] = data[j];
len--;
return 1;
}
}
int sequenlist::locate(DateType x)
{
int j = 0;
while ((j < len) && (data[j] != x))
j++;
if (j < len)
return j + 1;
else
return 0;
}
DateType sequenlist::get(int i)
{
if ((i < 1) && (i > len))
cout << "position is not correct!\n";
else
return data[i - 1];
}
int main()
{
return 0;
}
改完後的代碼:
#include <iostream>
using namespace std;
#define maxsize 100
typedef int DateType;
class sequenlist
{
private:
DateType data[maxsize];
int len;
public:
void initiate();
int length();
int insert(DateType x, int i);
int delet(int i);
int locate(DateType x);
DateType get(int i);
};
void sequenlist::initiate()
{
len = 0;
}
int sequenlist::length()
{
return len;
}
int sequenlist::insert(DateType x, int i)
{
int j;
if (len >= maxsize) {
cout << "overflow!\n";
return 0;
} else if ((i < 1) || (i > len + 1)) {
cout << "position is not correct!\n";
return 0;
} else {
for (j = len; j >= i; j--)
data[j] = data[j - 1];
len++;
return 1;
}
}
int sequenlist::delet(int i)
{
int j;
if ((i < 1) || (i > len)) {
cout << "position is not corrcet!\n";
return 0;
} else {
for (j = i; j < len; j++)
data[j - 1] = data[j];
len--;
return 1;
}
}
int sequenlist::locate(DateType x)
{
int j = 0;
while ((j < len) && (data[j] !=x) )
j++;
if (j < len)
return j + 1;
else
return 0;
}
DateType sequenlist::get(int i)
{
if ((i < 1) && (i > len))
cout << "position is not correct!\n";
else
return data[i - 1];
}
int main()
{
return 0;
}
後續:
好鬱悶,我是看一本書的代碼寫的,typedef書上竟然沒加分號,誤導我,鬱悶死了。