2012-03-11 6 views
0

JavaのArrayListsに似たオブジェクトの動的配列を作成しようとしています。私はC++で新しく、動作させることができません。C++でのオブジェクトの動的配列

class Album{ 

private: 

public: 
    void addPhoto(Photo p){ 

    } 

}; 

私のプライベートデータメンバーはどのようなものになるはずですし、どのように私はそれにpを追加するには?何らかの理由でポインタが必要ですか?

+1

あなたはSTLになります。あなたは他のコンテナとその機能、制限事項と目的を理解するために、標準C++ライブラリとSTLについての詳細を学びたいと思うかもしれません;さまざまなコンテナタイプがあります( 'vector'はここで気になるものですが、あなたの問題に適したものが他にもあるかもしれません)。 –

+0

ヒープスペースの割り当てに注意してください。 Albumオブジェクトが大きくなる場合は、新しいもので割り当てる方が良いかもしれません。 –

答えて

3

あなたが探している機能は、すでにstl collection classesにあります。アプリケーションを知っているうちに、ポインタが必要かどうかを気にする必要があります。

基礎となるコンテナの基本レイアウトは、このようなものになります。

class Album{  

public: 
    void addPhoto(Photo p){ 
     Photos.push_back(p); 
    } 
private: 
    std::vector<Photo> Photos; 

}; 
+0

あなたはもともとクラスメンバーのアンダースコア(つまり '_Photos')をどこに入れたか分かりましたが、(C++ Coding Standards)の本で普及したような(' Photos_') 。 –

+0

私は答えが気に入っていますが、 '_Photo'を使ってはいけません。これを参照してください理由:http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-a-c-identifier Photo_としてそれを見てうれしい。 – Chad

+0

私はちょうど習慣を働く現在のコーディング標準です。私はintelisenseのためにそれが好きです。他の仕事で私たちはm_ _をしたか、まったく表記をしていません。ハンガリーの表記法が厳しく枯渇しているMSの店では、より一般的に感じられます。 – rerun

1

ArrayListと非常によく似た組み込みのstd :: vectorクラスを使用できます。

1

@fontaniniはあなたに良い答えを与えました。オブジェクトの動的配列が必要な場合は、ベクターを使用する必要があります。

しかし、まずクラスを作成する必要はありません。あなたが本当に必要でない限り、C++のすべてをクラスにカプセル化する必要はありません。

データ構造と要件について考えてみましょう。 STLの優れたビデオ講義があり

Introduction to STL with Stephan T Lavavej

関連する問題