2016-04-16 11 views
0

私はcerstaind番号に配列のサイズを短縮したいと思います。私はクラスを持っていますshortend配列の印刷結果が間違っています

class Numbers{ 
public: 
    Numbers(){ 
    max = 10; 
    arr = new int[max]; 
    current = 0; 
} 
private: 
int *arr; 
int max; 
int current; 
} 

単純に何をしたいのですか?配列は、数字(10)例えば

arr // 1 2 3 4 5 6 7 8 9 10 

が含まれていると私は.shorten(number)メソッドを呼び出した場合、それは私が方法

を作成している

arr // 1 2 3 4 5 6 

だろう6におけるので、それは、番号を言ったために、配列を短縮します

このメソッドを呼び出して配列を出力すると、出力は1 2 3 4 5 6になるはずですが、最初の2つの数値がいくつかの乱数fを持つ同じ配列を出力しますROMメモリ。これを引き起こす原因は、どうしたらこれを防ぐことができますか?

印刷機能この

void Numbers::PrintAll(){ 
    for(int i = 0; i < max ; i++){ 
    cout << arr[i] << endl; 
    } 
} 

のように見え、

Numbers one; 

//として宣言私は、私はSTLコンテナを使用することができます知っているが、私は配列でこれを行うしたいと思います。

+0

このコードはコンパイルされません。このクラスをどのように使用するかを含めて、[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を作成してくださいオブジェクトの初期化、関数の使い方、最も重要なのは結果の出力方法です。 –

+0

質問に追加しました。 – user3706129

+0

あなたのコードを見れば、うまくいくはずだと思いますが、私は[それを複製できません](http://ideone.com/WnrunX)です。したがって、表示されないコードではエラーが発生する可能性が最も高いです。あなたは、価値のあるオブジェクトを関数に渡しますか?または価値によって戻る?デストラクタは何をしていますか?コピーコンストラクタは何をしますか?あなたはコピーコンストラクタを持っていますか? –

答えて

0

shortenメソッドではmaxを変更しないので、printは実際に存在する数字をさらに印刷しようとします。