は、私が受験のための勉強とテスト受験中に、彼らはへのポインタのポインタオブジェクトを使用して、動的に作成する必要性を置くptr-to-ptr配列の使用?このような何かを使用すると説明がある何
int capacity;
int** number;
this->number = new int*[this->capacity];
?:しますそれからの配列。 2つのクラスがあります。 ウォレット & ウォレットキーパー。
private:
Wallet** wallets;
int capacity;
int size;
/*other stuff below this*/
そしてコンストラクタで:彼らはWalletKeeperのヘッダ・ファイルでこれをやったソリューションで
Wallet * wallets = new Wallet[capacity];
:
WalletKeeper::WalletKeeper(int capacity)
{
this->capacity = capacity;
this->size = 0;
this->wallets = new Wallet*[this->capacity];
this->initiate();
}
私はこのような基本的な動的配列を理解しますこれは、このウォレットの配列が作成されたメモリ内の場所を指すポインタを作成することを意味します。そのため、それらのメモリスロットの内容を変更することができます。 しかし、なぜあなたはポインタの配列へのポインタを作るでしょうか?使用は何ですか?私はこれを読んでいるので
財布は、自分自身の配列を持っていない、私はそうでない場合は、それを理解しただろう:The correct way to initialize a dynamic pointer to a multidimensional array?
教授はさらに騒ぎまで休暇にしています。
なぜあなたは今までに他の配列を含むことができ、配列の配列を作るのでしょうか?たとえば、行列は配列の配列として表すことができます(各行の数値の配列、行列全体は単なる列の配列です)。 – ForceBru
私は答えに取り組んでいますが、私がする前に、私はこのような教授がまだC++を教えていることを驚かせています。 'std :: vector'または 'std :: vector >'オブジェクトを使用するように教えておかなければなりませんでした。どちらも、このエラーを起こしやすく、実用的なアプリケーションコードです。 –
Xirema
Wallet *の配列です。これは "自然な"現代的なC++ではなく、コンテナクラスを使って行う必要があり、可能な場合は一般的にメモリの未使用割り当ては避けるべきです。 – crashmstr