首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++中,对类的定义,实现,运用。—VS2008,求指教啊该怎么解决

2012-04-15 
C++中,对类的定义,实现,运用。—VS2008,,,求指教啊。。。#pragma once//定义一个顺序表类class SeqList{protect

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;
  }
}
我想请问一下,为什么会出这么多的错呢??、

错误1error C2143: 语法错误 : 缺少“;”(在“*”的前面)

错误2error 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;} 

热点排行