У меня есть me sh class Chunk
, который я создаю для каждого листового узла в октодереве. На данный момент я создаю std::vector<Chunk*>
и создаю чанки на основе положений конечных узлов. Однако, когда я пытаюсь реализовать член Chunk* data
в классе Octree
, вставка данных и их выгрузка (что в конечном итоге должно быть выполнено) вызывает ошибку sh.
#ifndef Octree_H
#define Octree_H
#include <cstddef>
#include <unordered_set>
#include <glm.hpp>
#include "Chunk.hpp"
namespace Camera {
class Octree {
// Physical position/size. This implicitly defines the bounding
// box of this node
glm::ivec3 _origin; // The physical center of this node
glm::vec3 _halfDimension; // Half the width/height/depth of this node
// The tree has up to eight _children and can additionally store
// a point, though in many applications only, the leaves will store _data.
Octree *_children[8]; // Pointers to child octants
public:
Chunk* data;
static std::unordered_set<Octree*> leafNodes;
Octree(const glm::ivec3& _origin, const glm::vec3& _halfDimension);
Octree(const Octree& copy);
~Octree();
double getDistanceToNode(const glm::vec3& p);
glm::ivec3 getOrigin() const;
int getHalfSize() const;
int getOctantContainingPoint(const glm::vec3& point) const;
bool isLeafNode() const;
void insert(const glm::vec3& camPos);
};
}
#endif
Это как данные загружаются в октодерево каждый кадр в моей функции рендеринга диспетчера фрагментов. *
Все работало нормально, пока я не поменял контейнер для данных. Если бы мне пришлось угадывать, я бы сказал, что это связано с копированием указателей, которое вызывает проблемы.