【发布时间】:2011-10-01 06:36:25
【问题描述】:
我正在使用 openFrameworks 编写应用程序,但我的问题不仅仅针对 oF;相反,这是一个关于 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;
我的问题很简单:为什么使用指针向量行得通,什么时候创建对象向量而不是指向这些对象的指针向量?
【问题讨论】:
-
我们可以写一些代码吗?仅凭解释有点难以回答。
-
如果您不发布任何代码,我们无法弄清楚为什么您的代码不起作用!请添加一个展示您的问题的示例。
-
重要的代码可能不是
vector的用法,而是ofVideoPlayer类本身。