Оператор new
возвращает тип указателя , но ваша переменная-член neighbors
не является указателем. Итак, вы присваиваете указатель (результат new
) типу без указателя. Ваша переменная neighbors
должна быть указателем: vector<T>* neighbors
.
Но я думаю, что вы, вероятно, неправильно понимаете использование new
здесь. Вы, вероятно, даже не должны использовать векторный указатель. Просто удалите строку neighbors = new vector<T>()
. Векторный объект будет автоматически инициализирован и готов к использованию.
В C ++ ключевое слово new
выделяет и инициализирует объекты в куче, которые затем должны быть освобождены позже с помощью delete
. Желательно избегать ключевого слова new
, просто инициализируя объект как автоматическую переменную, например:
vector<T> neighbors;
Таким образом, вам не нужно беспокоиться об управлении памятью, и векторный объект будет автоматически уничтожен, когда он выйдет из области видимости.