私はこの問題に苦労しているので、誰かが私を助けてくれることを願っています。オブジェクトのベクトルを反復するC++
私はオブジェクトのベクトルを作成していますが、このベクトルの要素にアクセスしたいのですが、en要素をベクターにプッシュバックしてアクセスしようとすると、機能しません。 ありがとうございます。
class reserve{
private:
vector<float> coordinates;
public:
reserve(const reserve &);
void addACoordinate(float);
void readCoordinates();
int getDim();
};
reserve::reserve(const reserve &w){
int i;
for(i=0; i<coordinates.size(); i++){
coordinates[i] = w.coordinates[i];
}
}
void reserve::addACoordinate(float c){
coordinates.push_back(c);
}
void reserve::readCoordinates(){
int i;
cout << "the coordinates are : ";
for(i=0; i<coordinates.size(); i++){
cout << coordinates[i] << " ";
}
cout << endl;
}
int reserve::getDim(){
return coordinates.size();
}
次に、2つの座標で予約を作成し、それを予約ベクトルにプッシュします。
vector<reserve> reserves;
reserve r;
r.addACoordinate(1.9);
r.addACoordinate(1.9);
r.getDim();
reserves.push_back(r);
cout << "size of reserves " << reserves.size() << endl;
for (vector<reserve>::iterator k = reserves.begin(); k != reserves.end(); ++k) {
k->getDim();
}
しかし、反復の出力は2ではなく0です。私が予約rにアクセスしていない理由はわかりません。
デバッグを試しましたか?コピーコンストラクタコードにはいくつかの問題があります。 – VTT
私が見ることができるように、コードはコンパイルされません。クラス 'reserve'のデフォルトコンストラクタはありません。 – Raindrop7
まず、コピーコンストラクタを削除してください。あなたはそれを必要とせず、バグです。 – juanchopanza