C ++ - вернуть ссылку на элемент вектора - PullRequest
0 голосов
/ 27 мая 2018

Я хочу вернуть ссылку на один элемент в векторе, который я получаю в качестве параметра, а затем сравнить там адреса памяти.Упрощенный пример моего кода показан ниже:

const int &test(std::vector<int> i) {
    return i.at(3);
}

TEST(test, all_test) {
    const std::vector<int> i = {1,2,3,4,5};
    const int &j = test(i);
    ASSERT_THAT(&j, Eq(&i.at(3)));
}

Используя это, я получаю следующее сообщение об ошибке:

Failure
Value of: &j
Expected: is equal to 0x55da7899d4dc
  Actual: 0x55da7899d4fc (of type int const*)

Как я могу вернуть ссылку на один элемент вектора?

1 Ответ

0 голосов
/ 27 мая 2018

Вы передаете вектор по значению, поэтому возвращаете ссылку на временный элемент.Если вы передадите вектор по ссылке, все будет в порядке.

...