Мне кажется, что entity_type
- это указатель (судя по лямбде for_each).
Вы, вероятно, хотели использовать
NeighborCalculatorDummy<SomeEntity>
вместо
NeighborCalculatorDummy<SomeEntity*>
в каком-то другом месте вашего кода (не показан)
Конечно, лямбда будет написана иначе:
[&](const entity_type& ent){
if(lengthSq(ent.getPosition() - position) <= rSq)
m_neighbors.push_back(ent);
}
и, возможно, более похожие места, которые принимают тип entity_typeтребуется разыменование.
В качестве альтернативы вы можете использовать
vector<std::shared_ptr<entity_type> >
вместо - Контейнеры повышения указателя
Они могут быть более подходящимикогда ваши объекты являются полиморфными типами или не копируемыми / движимыми.Тем не менее, также вероятно, что больше работы по изменению вашего кода вокруг