Подпись vector::push_back
является:вектор :: push_back преобразование Тип конструкции * ввести *
void push_back (const value_type& val);
, который означает, что он несет ответственность за не развращает val
.
Моя функция:
Result User::addFriend(const User* newFriend)
{
// check that newFriend is valid and is not already a friend
if (newFriend == NULL || isFriend(newFriend)) return FAILURE;
friends_.push_back(newFriend);
friendsNum_++;
return SUCCESS;
}
при компиляции файла .c я получаю ошибку компиляции:
invalid conversion from 'const User*' to
std::vector User*::value_type
Почему мы получаем эту ошибку, если push_back обещает не изменение val?
Каков правильный и чистый способ преодоления ошибки? возможно, const_cast?
спасибо!
user.h:
class User {
...
public:
vector<User*> friends_;
...
}
Можете ли вы показать больше кода? В частности, какой тип «друзей»? – sfjac
Вы сохраняете вектор указателей ...? – Rufflewind
Rufflewind: yes –