Я пытаюсь получить пересечение массива и вектора. Я решил сделать их обоими векторами, потому что именно так cplusplus.com приводит пример.
Это сообщение об ошибке, которое я получаю:
и вот мой код:
getNumbers()
функция возвращает массив.
РЕДАКТИРОВАТЬ
Здесь getNumbers()
функция — она просто возвращает свойство того же типа возврата:
Это утверждение обычно означает, что итераторы, заданные как начало и конец диапазона, ссылаются на разные коллекции.
getNumbers()
функция возвращает массив.
Если не getNumbers()
возвращает массив по ссылке, а также возвращает ссылку на тот же массив, эта инициализация недействительна:
std::vector<unsigned int> ticketNumbers(getNumbers().begin(), getNumbers().end());
Для того чтобы вышесказанное работало, getNumbers()
должен повторно возвращать ссылку на один и тот же массив. Ваш getNumbers
возвращает копию, потому что он возвращает массив по значению.
Чтобы исправить эту линию, сначала позвоните getNumbers()
сохранить результат во временной переменной tempNumbers
, как это
std::array<unsigned int, TICKET_BALL_COUNT> tempNumbers= getNumbers();
std::vector<unsigned int> ticketNumbers(tempNumbers.begin(), tempNumbers.end());
Кроме того, вы можете изменить свой getNumbers()
функция для возврата const
ссылка, как это:
const std::array<unsigned int, TICKET_BALL_COUNT>& Ticket::getNumbers() const {
return _numbers;
}
Других решений пока нет …