嗨我正在從一個項目中獲取文件中的信息,然後將其放入一個對象數組中,然後通過菜單中的選項操縱對象中的數據。我目前遇到的問題是菜單中的一個選項是向對象添加一個新元素。該項目狀態,我必須使用一個對象數組,所以我不能只使用一個矢量我將數組放入其中的類來調整它的大小,它使用臨時動態數組作爲對象,然後刪除原始數組。在C++中調整對象的動態數組
這裏的類是什麼樣
class Info
{
private:
string name;
double money;
public:
Info(){
name="";
money=0;
}
void Setname(string n){
name=n;
}
void Setmoney(double m){
money=m;
}
string GetName()const{
return name;
}
double GetMoney()const{
return money;
}
};
現在只是一個實際的類與它的方程改變貨幣變量的類的樣品,不過對於這個問題的目的,這是所有的需要。現在,這裏是我有問題
void Addinfo(Info in [], int & size){
string newname;
double newmoney;
cout<<"What name are you going to use?"<<endl;
cin>>newname;
cout<<"Now How much money do you have currently"<<endl;
cin>>newmoney;
Info *temp= new Info[size+1];
for(int index=0; index<size;index++){
temp[index].Setname(in[index].GetName());
temp[index].Setmoney(in[index].GetMoney());
}
delete []in;
temp[size].Setname(newname);
temp[size].Setmoney(newmoney);
in=temp;
size=size+1;
}
現在,當我運行程序一切都正常運行,直到我嘗試使用此功能在陣列中的數據得到腐敗的功能。我是否應該讓Info變量成爲一個新的動態數組,它可以容納所有信息,然後使用另一個for循環將變量放入新的動態數組中,或者我應該做其他事情。還記得我必須爲此使用數組。另外,當刪除一個動態數組我是否應該刪除後使前一個數組等於零或是其他的東西?
如果你想將'in'設置爲temp數組,你應該將它作爲指針的引用傳入。你的'in = temp'賦值現在沒有任何有用的效果,因爲'in'是通過值傳入的 – happydave