不用扩展这个程序,只找找其中有什么错误。
#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;
}