С++.Ошибка при инициализации vector значением(ссылкой) из функции
Есть вот такая программа:
#include<vector>
using namespace std;
vector<int>& getVector()
{
vector<int> a;
return a;
}
int main() {
vector<int> some = getVector(); //***
}
Не подскажите, почему строка vector<int> some = getVector() выдает ошибку после компиляции?
Примечание: код ниже рабочий.
vector<int> some;
some = getVector();
Ответы (1 шт):
Автор решения: LShadow77
→ Ссылка
Полагаю, что ошибку выдаёт потому, что ваша функция getVector() возвращает указатель (ссылку) на уже несуществующий экземпляр класса vector, так как он объявлен локальной переменной функции getVector(). Перед возвратом вызывается деструктор, фрейм локальных переменных освобождается. Нельзя возвращать указатели на локальные переменные, никогда!