Код: Выделить всё
enum class Types
{
PURE,
LAZY,
COMPUTED,
EVENTUAL,
TRANSIENT,
STATIC,
SAFE,
UNSAFE,
START,
};
struct Modifier
{
Types Type;
};
Я проверяю, является ли статическое приведение нулевым значением nullptr, но этого никогда не происходит.
Код: Выделить всё
struct Variable : public BaseToken, public Expressions::ContainsExpressions
{
std::vector Modifiers;
};
struct Variable_Definition : public Variable
{
std::string VariableName;
Types::Native VariableType;
};
Код: Выделить всё
...
std::shared_ptr Token = std::static_pointer_cast(ThisToken);
...
std::vector vec;
std::unique_ptr Modifier = std::make_unique();
Modifier->Type = ModifierPair->second;
if (Modifier->Type == Modifiers::Types::PURE)
{
print("IS PURE");
}
print(Token->Type);
print(var);
print(Token->Modifiers.size());
Token->Modifiers = std::vector();
Token->Modifiers.push_back(std::move(Modifier));
print("Found modifier");
Код: Выделить всё
Unhandled exception thrown: read access violation.
_Val was 0xFFFFFFFFFFFFFFFF.

ПРИМЕЧАНИЕ. В некоторых случаях код работает гладко, и отладчик показывает правильные значения в векторе, в других случаях возникает ошибка чтения.
Я не верю, что токен имеет значение NULL, но почему-то вектор таков, поскольку иногда он находится в вывод, размер вектора - очень огромное число. (вероятно, ограничение на размер вектора)
Подробнее здесь: https://stackoverflow.com/questions/791 ... -read-viol