C++中,对类的定义,实现,运用。—VS2008,求指教啊该怎么解决
C++中,对类的定义,实现,运用。—VS2008,,,求指教啊。。。
#pragma once
//定义一个顺序表类
class SeqList
{
protected:
DataType *list;
int size;
int maxSize;
public:
SeqList(int max);
~SeqList(void);
void Insert(int i,DataType& x);
DataType GetData(int i);
};
#include "SeqList.h"
SeqList::SeqList(int max)
{
maxSize=max;
size=0;
list=new DataType[maxSize]
}
SeqList::~SeqList(void)
{
delete []list;
}
void SeqList::Insert(int i,DataType& x)
{
if(size==maxSize)
{
cout<<"顺序表以满"<<endl;
exit(0);
}
if(i<0||i>size)
{
cout<<"参数i越界出错!"<<endl;
exit(0);
}
for (int j=size;j>i;j--)
list[j]=list[j-1];
list[i]=x;
size++;
}
DataType SeqList::GetData(int i)
{
if(i<0||i>size-1)
{
cout<<"参数i越界出错"<<endl;
exit(0);
}
return list[i];
}
#include <iostream>
using namespace std;
typedef int DataType;
#include "SeqList.h"
void main()
{
SeqList myList(100);
int n;
for(int i=0;i<n;i++)
{
myList.Insert(i,i+1);
}
for(int i=0;i<n;i++)
{
cout<<myList.GetData(i)<<endl;
}
}
我想请问一下,为什么会出这么多的错呢??、
错误 1 error C2143: 语法错误 : 缺少“;”(在“*”的前面)
错误 2 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
我不懂啊?我是初学者,求高手帮个忙,谢谢
------解决方案--------------------
慢慢调试,你在list=new DataType[maxSize];后面漏掉了一个分号;还有就是对引用的使用。你的insert函数的第二参数是引用,当你用i+1的时候这是一个临时变量,不能作为引用的。
#pragma once
//定义一个顺序表类
class SeqList
{
protected:
DataType *list;
int size;
int maxSize;
public:
SeqList(int max);
~SeqList(void);
void Insert(int i,DataType& x);
DataType GetData(int i);
};
#include "SeqList.h"
SeqList::SeqList(int max)
{
maxSize=max;
size=0;
list=new DataType[maxSize]
}
SeqList::~SeqList(void)
{
delete []list;
}
void SeqList::Insert(int i,DataType& x)
{
if(size==maxSize)
{
cout<<"顺序表以满"<<endl;
exit(0);
}
if(i<0||i>size)
{
cout<<"参数i越界出错!"<<endl;
exit(0);
}
for (int j=size;j>i;j--)
list[j]=list[j-1];
list[i]=x;
size++;
}
DataType SeqList::GetData(int i)
{
if(i<0||i>size-1)
{
cout<<"参数i越界出错"<<endl;
exit(0);
}
return list[i];
}
#include <iostream>
using namespace std;
typedef int DataType;
#include "SeqList.h"
void main()
{
SeqList myList(100);
int n;
for(int i=0;i<n;i++)
{
myList.Insert(i,i+1);
}
for(int i=0;i<n;i++)
{
cout<<myList.GetData(i)<<endl;
}
}
我想请问一下,为什么会出这么多的错呢??、
错误 1 error C2143: 语法错误 : 缺少“;”(在“*”的前面)
错误 2 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
我不懂啊?我是初学者,求高手帮个忙,谢谢
------解决方案--------------------
慢慢调试,你在list=new DataType[maxSize];后面漏掉了一个分号;还有就是对引用的使用。你的insert函数的第二参数是引用,当你用i+1的时候这是一个临时变量,不能作为引用的。
- C/C++ code
#include <iostream> using namespace std; typedef int DataType; class SeqList { protected: DataType *list; int size; int maxSize; public: SeqList(int max); ~SeqList(void); void Insert(int i,DataType& x); DataType GetData(int i); }; SeqList::SeqList(int max) { maxSize=max; size=0; list=new DataType[maxSize]; } SeqList::~SeqList(void) { delete []list; } void SeqList::Insert(int i,DataType& x) { if(size==maxSize) { cout<<"顺序表以满"<<endl; exit(0); } if(i<0||i>size) { cout<<"参数i越界出错!"<<endl; exit(0); } for (int j=size;j>i;j--) list[j]=list[j-1]; list[i]=x; size++; } DataType SeqList::GetData(int i) { if(i<0||i>size-1) { cout<<"参数i越界出错"<<endl; exit(0); } return list[i]; } void main() { SeqList myList(100); int n; int j; for(int i=0;i<n;i++) { j = i+1; myList.Insert(i,j); } for(int i=0;i<n;i++) { cout<<myList.GetData(i)<<endl; } }
------解决方案--------------------
list=new DataType[maxSize]//少了一分号
DataType *list;
void Insert(int i,DataType& x); //datatype没有明确类型。
此时你可以用楼上的方法。也可以用泛型
------解决方案--------------------
用模板:
- C/C++ code
#include <iostream> using namespace std; template <typename DataType> class SeqList { protected: DataType *list; int size; int maxSize; public: SeqList<DataType>(int max); ~SeqList<DataType>(void); void Insert(int i, DataType &x); DataType GetData(int i); }; template <typename DataType> SeqList<DataType>::SeqList<DataType>(int max) { maxSize = max; size = 0; list = new DataType[maxSize]; } template <typename DataType> SeqList<DataType>::~SeqList<DataType>(void) { delete []list; } template <typename DataType> void SeqList<DataType>::Insert(int i, DataType &x) { if (size == maxSize) { cout << "顺序表已满" << endl; exit(0); } if (i < 0 || i > size) { cout << "参数i越界出错!" << endl; exit(0); } for (int j = size; j > i; j--) list[j] = list[j - 1]; list[i] = x; size++; } template <typename DataType> DataType SeqList<DataType>::GetData(int i) { if (i < 0 || i > size - 1) { cout << "参数i越界出错" << endl; exit(0); } return list[i]; } int main() { SeqList<int> myList(100); int n = 10; // 使用未初始化的值 int j; for(int i = 0; i < n; i++) { j = i + 1; myList.Insert(i, j); } for(int i = 0; i < n; i++) { cout << myList.GetData(i) << endl; } return 0; }