我想创建一个函数,呈现displayobject对象(在另一个线程上)的向量中的所有内容。我正在使用SDL线程。C++矢量大小为零
这里是displayobject.h:
class DisplayObject
{
protected:
int width;
int height;
int x;
int y;
SDL_Texture* texture;
SDL_Renderer* renderer;
public:
~DisplayObject();
int getX();
void setX(int x);
int getY();
void setY(int y);
int getWidth();
void setWidth(int width);
int getHeight();
void setHeight(int height);
SDL_Texture* getTexture();
SDL_Renderer* getRenderer();
};
在graphics.h中我有这些变量:
std::vector<DisplayObject> imgArr;
SDL_Thread* renderThread;
static int renderLoop(void* vectorPointer);
此代码是在图形构造:
TextLabel textLabel(graphics->getRenderer(), 300, 80, "Hallo Welt", 50, Color(255, 0, 255), "Xenotron.ttf");
//TextLabel inherits from DisplayObject
imgArr.push_back(textLabel);
renderThread = SDL_CreateThread(Graphics::renderLoop, "renderLoop", &imgArr);
这是渲染循环功能:
int Graphics::renderLoop(void* param)
{
int counter = 0;
bool rendering = true;
std::vector<DisplayObject>* imgArr = (std::vector<DisplayObject>*)param;
while (rendering)
{
cout << imgArr->size() << endl;
counter++;
if (counter > 600)
{
rendering = false;
}
SDL_Delay(16);
}
return 0;
}
问题是它只在控制台打印0。它为什么这样做?它应该写1,因为我把对象放入它。
在一个不相关的点上,仅仅因为一个函数想要一个指针参数并不意味着你传递的变量必须是一个指针。在需要时,可以使用地址 - 运算符'&'来创建一个指向变量的指针。 – 2015-03-31 16:40:41
'新的std :: vector'通常是错误的。为什么不只是'std :: vector imgArr;'? –
2015-03-31 16:42:06
@NeilKirk现在编辑 – 2015-03-31 16:48:36