Как отладить эту ошибку, вызванную чертами типа?

Я столкнулся с действительно странной ошибкой в ​​моем приложении. Это видео игра, которая использует Пуля Физика среди других библиотек.

После реализации интерфейса SQLite обнаружение столкновений было перепутано. Игроки проваливаются по местности или сталкиваются с невидимыми объектами. Для меня это выглядит как неправильный доступ к памяти. Функциональность базы данных работает нормально, хотя.

Я мог бы уже сузить вопрос. Интерфейс SQLite использует черты типов, которые предоставляются различными хранимыми типами. При комментировании всех специализаций черт столкновения работают нормально.

Как я могу найти причину этой ошибки? Пожалуйста, дайте мне знать, может ли какая-либо другая информация быть полезной для решения проблемы, чтобы я мог включить ее в вопрос.

Обновление: это код, который мне нужно комментировать для правильных коллизий. Тип хранения Person,

Тип / человек / type.h

#pragma once
struct Person
{
float Height, Mass;
// ...
};

Тип / человек / trait.h

#pragma once
#include "type.h"#include "manager/data/manager.h"using namespace std;

template <>
struct ManagerDataTrait<Person>
{
static const unordered_map<string, string> Fields;
static void Serialize(Person *Instance, ManagerData::Serialization *Data)
{
Data->FLOAT("height", Instance->Height);
Data->FLOAT("mass",   Instance->Mass);
}
static void Deserialize(Person *Instance, ManagerData::Deserialization *Data)
{
Instance->Height = Data->FLOAT("height");
Instance->Mass   = Data->FLOAT("mass");
}
};

Тип / человек / general.cpp

#include "type.h"#include "trait.h"using namespace std;

const unordered_map<string, string> ManagerDataTrait<Person>::Fields = []{
unordered_map<string, string> fields;
fields.insert(std::make_pair("height", "FLOAT"));
fields.insert(std::make_pair("mass", "FLOAT"));
return fields;
}();

2

Решение

Пользователь Yakk ответил на мой вопрос в комментариях.

Специализация должна быть видна рядом с типом. Происходит неопределенное поведение
если одна единица видит это, а другая нет.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector