以下は、さまざまなタイプのデータ要素を格納する Vector のテンプレート クラスです。コピーコンストラクタとメインのコードを確認してください。私が期待していたのは、「cout << vCHAR2[2] << endl;」というステートメントです。コピー請負業者は浅いコピーを行っていますが、「責任」を印刷しているため、値「費用」を印刷する必要があります。
誰でも私を助けることができますか?ありがとう。
template<typename T>
class Vector{
private:
T* ptr;
int size;
public:
Vector<T>(int s = 10){
size = s;
if(size!=0)
{
ptr = new T[size];
}else{
ptr = 0;
}
}
Vector<T>(const Vector<T> ©){
this->size=copy.getSize();
if(size !=0)
{
ptr=new T[size];
for(int i=0;i<size;i++)
ptr[i] = copy.ptr[i];
}else{
this->ptr=0;
}
}
~Vector<T>(){
if(size>0)
{
delete[] ptr;
}
}
int getSize() const
{
return size;
}
const Vector<T> & operator = (const Vector<T> &rhs){
if(this!=&rhs)
delete [] this->ptr;
size = rhs.size;
if(size!=0)
{
ptr=new T[size];
for(int i=0;i<size;i++)
ptr[i] = rhs.ptr[i];
}
return *this;
}
T& operator[](int index){
if(index>=0 && index<=size)
return ptr[index];
}
};
int main(int argc, char *argv[])
{
Vector<char*> vCHAR(10);
vCHAR[0]="asset";
vCHAR[1]="income";
vCHAR[2]="liability";
Vector<char*> vCHAR2(vCHAR);
vCHAR[2] = "expense";
cout << vCHAR[2] << endl;
cout << vCHAR2[2] << endl;
system("PAUSE");
return EXIT_SUCCESS;
}