Ich möchte die Größe der Array zu certaind Zahl verkürzen. Ich habe eine KlasseShort-End-Array-Druck falsches Ergebnis
class Numbers{
public:
Numbers(){
max = 10;
arr = new int[max];
current = 0;
}
private:
int *arr;
int max;
int current;
}
Was ich einfach tun möchte. Wenn die Anordnungsnummern enthalten, (10), zB
arr // 1 2 3 4 5 6 7 8 9 10
und ich rufe .shorten(number)
Verfahren, wird es Array verkürzen Nummer gesagt hat, so in 6 wäre es
arr // 1 2 3 4 5 6
ich eine Methode geschaffen seine
void Numbers::shorten(int a){
int *tmp = new int[a];
for(int i = 0; i < a; i++){
tmp[i] = arr[i];
}
max = a;
delete[] arr;
arr = tmp;
}
Wenn ich diese Methode aufrufen und das Array drucken, sollte die Ausgabe 1 2 3 4 5 6
sein, aber stattdessen druckt das gleiche Array mit den ersten beiden Zahlen einige Zufallszahlen f aus der Erinnerung. Was verursacht dies, wie kann ich dies verhindern?
Druckfunktion sieht wie folgt aus
void Numbers::PrintAll(){
for(int i = 0; i < max ; i++){
cout << arr[i] << endl;
}
}
und erklärt es als
Numbers one;
// Ich weiß, ich STL-Container verwenden können, aber ich möchte dies mit Arrays tun.
Dieser Code wird nicht kompiliert, bitte versuchen Sie, ein [minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) zu erstellen und zeigen Sie uns, einschließlich, wie Sie diese Klasse verwenden, wie Sie initialisieren Sie die Objekte, wie Sie die Funktionen verwenden und vor allem, wie Sie das Ergebnis * drucken *. –
Hinzugefügt der Frage. – user3706129
Wenn Sie sich Ihren Code ansehen, scheint es, als ob es funktionieren sollte, und ich [kann es auch nicht replizieren] (http://ideone.com/WnrunX). Der Fehler ist wahrscheinlich in einem Code, den Sie nicht anzeigen. Übergeben Sie das Objekt nach Wert an eine Funktion? Oder Rückgabe nach Wert? Was macht dein Destruktor? Was macht der Copy-Konstruktor? Hast du einen Kopierkonstruktor? –