私はopenFrameworksを使用してアプリケーションを作成していますが、私の質問はoFだけではありません。むしろ一般的なC++ベクタに関する一般的な質問です。オブジェクトのC++ベクトルとオブジェクトへのポインタのベクトル
別のクラスの複数のインスタンスを含むクラスを作成すると同時に、それらのオブジェクトとやりとりするための直感的なインターフェイスも提供したいと考えていました。内部的にはクラスのベクトルを使用していましたが、vector.at()を使用してオブジェクトを操作しようとすると、プログラムはコンパイルされましたが正しく動作しませんでした(私の場合はビデオは表示されません)。どこか
// instantiate object dynamically, do something, then append to vector
vector<ofVideoPlayer> videos;
ofVideoPlayer *video = new ofVideoPlayer;
video->loadMovie(filename);
videos.push_back(*video);
// access object in vector and do something; compiles but does not work properly
// without going into specific openFrameworks details, the problem was that the video would
// not draw to screen
videos.at(0)->draw();
、それは私が代わりにそれらのオブジェクト自体のベクトルのそのクラスのオブジェクトへのポインタのベクトルを作ることが示唆されました。私はこれを実装しましたが、実際それは魅力的に機能しました。
vector<ofVideoPlayer*> videos;
ofVideoPlayer * video = new ofVideoPlayer;
video->loadMovie(filename);
videos.push_back(video);
// now dereference pointer to object and call draw
videos.at(0)->draw();
私は、動的オブジェクト用のメモリを割り当てたすなわちofVideoPlayer = new ofVideoPlayer;
私の質問は簡単です:なぜポインタの仕事のベクトルを使用しなかった、とあなたはポインタのベクトル対オブジェクトのベクトルを作成したときにそれらのオブジェクトに?
いくつかコードすることはできますか?ちょうど説明からこれに答えるのは少し難しい。 – MGZero
投稿していないとコードがうまくいかなかった理由はわかりません!あなたの質問を紹介する例を追加してください。 – Cameron
重要なコードは 'vector'の使用法ではなく、' ofVideoPlayer'クラスそのものです。 –