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

不用扩展这个程序,只找找其中有什么东东

2012-02-20 
不用扩展这个程序,只找找其中有什么错误。#include iostream.hclassIntArray{protected:staticconstintDe

不用扩展这个程序,只找找其中有什么错误。
#include <iostream.h>

class   IntArray
{
protected:
static   const   int   DefaultArraySize=12;
int   _size;
int   *ia;
public:
explicit   IntArray   (int   size=DefaultArraySize)
{
_size=DefaultArraySize;
ia=new   int[_size];
for   (int   ix=0;ix <-size;++ix)
ia[ix]=0;
}

        IntArray   (int   *array,int   array_size)
{
_size=array_size;
ia=new   int[_size];
for(int   ix=0;ix <_size;++ix)
ia[ix]=array[ix];
}
IntArray(const   IntArray   &rhs)
{
_size=rhs._size;
ia=new   int[_size];
for(int   ix=0;ix <size;++ix)
ia[x]=rhs.ia[ix];
}
virtual   ~IntArray()   {delete   []   ia;}
        bool   operator==(const   IntArray   &)const;
bool   operator!=(const   IntArray   &)const;
IntArray   &   operator   =(const   IntArray   &);
int   size()   const   {return   _size;}
virtual   int   operator[](int   index){return   ia[index];}
virtual   void   sort();
virtual   int   min()   const;
virtual   int   max()   const;
virtual   int   find   (int   value)   const;

};

class   IntArrayRC   :   public   IntArray
{
public:
IntArrayRC(int   sz):IntArray(sz)   {}
IntarrayRC(const   int   *iar,   int   sz)
:   IntArray(iar,sz){}

void   check_range(int   index)
{
assert(index> =0&&index> size);
}
int&   operator[](int   index)
{
check_range(index);
return   ia[index];
}
private:
int   sz;
int   *iar;
void   check_range(int);
};


void   swap(IntArray   &   ia,int   i,int   j)
{
int   tmp=ia[i];
ia[i]=ia[j];
ia[j]=tmp;
}


[解决办法]
只考虑编译,这样可以在vc6中过了.

#include <iostream.h>
#include <assert.h>
class IntArray
{
protected:
static const int DefaultArraySize;//=12;这里只是声明,类外去定义并初始化
int _size;
int *ia;
public:
explicit IntArray (int size=DefaultArraySize)
{
_size=DefaultArraySize;
ia=new int[_size];
for (int ix=0;ix <-size;++ix)
ia[ix]=0;
}

IntArray (const int *array,int array_size)
{
_size=array_size;
ia=new int[_size];
for(int ix=0;ix <_size;++ix)
ia[ix]=array[ix];
}
IntArray(const IntArray &rhs)
{
_size=rhs._size;
ia=new int[_size];
for(int ix=0;ix <_size;++ix)
ia[ix]=rhs.ia[ix];
}
virtual ~IntArray() {delete [] ia;}
bool operator==(const IntArray &)const;
bool operator!=(const IntArray &)const;
IntArray & operator =(const IntArray &);
int size() const {return _size;}
int& operator[](int index){return ia[index];}
virtual void sort();
virtual int min2() const;
virtual int max2() const;
virtual int find (int value) const;



};
const int IntArray::DefaultArraySize=12;

class IntArrayRC : public IntArray
{
public:
IntArrayRC(int sz):IntArray(sz) {}
IntArrayRC(const int *iar, int sz):IntArray(iar,sz){}

void check_range(int index)
{
assert(index> =0 && index> _size);
}
int& operator[](int index)
{
check_range(index);
return ia[index];
}
private:
int sz;
int *iar;
//void check_range(int);
};


void swap(IntArray & ia,int i,int j)
{
int tmp=ia[i];
ia[i]=ia[j];
ia[j]=tmp;
}

热点排行