내가이 구조체가 실패표준 : : 벡터 어설 션 (벡터 반복자는 호환되지 않는)
Assertion failed (vector iterators incompatible)
벡터 생성 코드 :
instInFrustumData.reserve(mNumInstances);
벡터 갱신 코드 :
void Terrain::updateInstances()
{
mNumInstancesInFrustum = 0;
if(instInFrustumData.size() != 0)
instInFrustumData.clear();
mpMxMInstInFrustumB->Map(D3D10_MAP_WRITE_DISCARD, NULL, (void**) &instInFrustumData);
for(int x = 0; x < mNumInstances; x++)
{
if(mpCamera->point2DInFrustum(instData[x].mTransform +
D3DXVECTOR2(instData[x].mSpacing/2 + mpCamera->getPosition().x, instData[x].mSpacing/2 + mpCamera->getPosition().z), instData[x].mSpacing/2)
!= OUTSIDE)
{
instInFrustumData.push_back(instData[x]);
mNumInstancesInFrustum++;
}
}
mpMxMInstInFrustumB->Unmap();
}
무엇이 그렇게 할 수 있습니까?
그리고 내 클래스의 소멸자
내가 여기 추측의 명확한()
게시 된 코드는 게시 할 수 없습니다. – Erik
다른 것을 찾았습니다 : 벡터를 생성 한 후에 크기 = 용량으로 크기를 조정합니다.나는 clear()와 ok를 호출하기 때문에 size = 0 capacity = 100, 그 다음에는 8 개의 값으로 채우고 두 번째 시간에 다시 clear를 호출하면 오류가 발생합니다. –
const 및 non-const 이터레이터를 서로 바꾸어 사용할 수 있습니다. 그러나 실제 코드를 게시하려면 여기에있는 것이이 오류의 원인이 아니기 때문에 게시해야합니다. – AJG85