Проходя через отладчик, объект BBox в порядке при вводе функции, но как только он входит в функцию, объект vfptr указывает на 0xccccc. Я не понимаю
- Что вызывает это?
- Почему там ссылка на виртуальную таблицу, если объект не является производным от другого класса. (Хотя он находится в GameObject, от которого наследуется мой класс Player, и я извлекаю BBox из проигрывателя. Но почему у BBox есть ссылка? Разве это не должен быть игрок, которого следует поддерживать в этой ссылке?)
за 1; некоторый код для справки:
а. Я получаю ограничивающую рамку от игрока. Это возвращает ограничивающий прямоугольник, как и ожидалось. Затем я отправляю его адрес в GetGridCells.
const BoundingBox& l_Bbox = l_pPlayer->GetBoundingBox();
boost::unordered_set < Cell*, CellPHash >& l_GridCells = GetGridCells ( &l_Bbox );
B. Вот где a_pBoundingBox сходит с ума и получает это значение мусора.
boost::unordered_set< Cell*, CellPHash > CollisionMgr::GetGridCells(const BoundingBox *a_pBoundingBox)
{
Я думаю, что следующий код также уместен, так что я все равно воткну его сюда:
const BoundingBox& Player::GetBoundingBox(void)
{
return BoundingBox( &GetBoundingSphere() );
}
const BoundingSphere& Player::GetBoundingSphere(void)
{
BoundingSphere& l_BSphere = m_pGeomMesh->m_BoundingSphere;
l_BSphere.m_Center = GetPosition();
return l_BSphere;
}
// BoundingBox Constructor
BoundingBox(const BoundingSphere* a_pBoundingSphere);
Может кто-нибудь дать мне некоторое представление о том, почему это происходит? Кроме того, если вы хотите, чтобы я опубликовал больше кода, пожалуйста, дайте мне знать.
Спасибо!