我正在寫一個使用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
重要的代碼可能不是'矢量'的用法,而是'VideoPlayer'類本身。 –