找不出错误?
按照书上写了个程序,可总是有错,可对照也找不出错误。
类模板
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <stdexcept>
template<typename T> class Array{
private:
T* elements;
size_t size;
public:
explicit Array(size_t arraysize);
Array(const Array &theArray);
~Array();
T& operator[](size_t index);
const T& operator[](size_t index) const;
Array& operator=(const Array& rhs);
};
template<typename T>
Array<T>::Array(size_t arraysize):size(arraysize)
{
elements = new T[size];
}
template<typename T>
Array<T>::Array(const Array& theArray)
{
size=theArray.size;
elements= new T[size];
for(int i=0;i<(int)size;i++)
{
elements[i]=theArray.elements[i];
}
}
template<typename T>
Array<T>::~Array()
{
delete [] elements;
}
template<typename T>
const T& Array<T>::operator[](size_t index) const
{
if(index<0||index>=size)
throw std::out_of_range(index<0 ? "Negative Index" : "Index too large");
return elements[index] ;
}
template<typename T>
T& Array<T>::operator[](size_t index)
{
if(index<0 || index >=size) //A
throw std::out_of_range(index<0 ? "Negative Index" : "Index too large");//B
return elements[index] ;
}
template<typename T>
Array<T>& Array<T>::operator=(const Array& rhs)
{
if(&rhs==this)
return *this;
if(elements)
delete [] elements;
size=rhs.size;
elements=new T[rhs.size];
for(int i=0;i<size;i++)
elements[i]=rhs.elements[i];
}
#endif
运行
void __fastcall TForm1::Button1Click(TObject *Sender)
{
const int n=20;
Array<int> intd(n);
for(int i=0;i<20;i++)
{
intd[i]=i++;
}
Label1->Caption = IntToStr(intd[19]); //显示的数值总是不对
}
出了有上面的那个错误以外,还有两个错无
总是提示A,B出的以下错误
A W8008 Condition is always false
B W8008 Condition is always false
那位帮这调试一下,看错在那里