我有一个向量,由std::vector<LPDIRECT3DTEXTURE9> textures;定义。稍后,我将一个LPDIRECT3DTEXTURE9对象传递给它,就像这样textures.push_back(texture);以下是此示例:

void SpriteManager::AddSprite(float x, float y, float z, LPDIRECT3DTEXTURE9 texture)
{
    //snip
    textures.push_back(texture);
    //snip
}

这会导致运行时错误。它在size()函数的向量类中打破。为什么会这样?

修改

我也遇到了一个相同的问题,对D3DXVECTOR3对象的向量执行相同的操作。由于IDIRECT3DTEXTURE9是指向<=>的指针,我应该使用它吗?

有帮助吗?

解决方案

到目前为止,最常见的原因是你实际上没有矢量。在这种情况下,textures似乎是SpriteManager类的成员。所以,这表明你实际上也没有this对象。 <=>指针有效吗?

其他提示

好吧,因为它的匈牙利名字LPDIRECT3DTEXTURE9是一个指针而不是一个对象(正如你所指的那样),我的猜测是你传递的无效指针已经做了 fandango 在你的可怜的矢量对象上调用push_back()之前。

我可能错了,但这可以从您提供的信息中说出来。并且,是的,push_back()应该只能在内存不足或尝试在向量中使用不可复制或不可分配的对象时失败,然后才能通过访问冲突。

您的矢量已损坏。我建议在其内部放置一个数据观察点,看看它是什么(在调试器中)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top