@TopToster

Не работает код?

#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <exception>
#include <fstream>
#include <cstdint>
#include <tuple>
#include <utility>
using namespace std;
template <class First,class Second>
Second& GetRefStrict(map<First,Second>& m,const First f){
    if (m.count(f)==0) throw runtime_error("error");
    Second *res=&m[f];
    return res; //здесь подчеркивает
}
int main() {
    map<int, string> m = {{0, "value"}};
    string& item = GetRefStrict(m,0);
    item = "newvalue";
    cout << m[0] << endl; // выведет newvalue

    return 0;
}
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
@res2001
Developer, ex-admin
У вас GetRefStrict должна возвращать ссылку, а вы возвращаете указатель.
return *res;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Wexter
<b>Second& </b>GetRefStrict(map<First,Second>& m,const First f){
    if (m.count(f)==0) throw runtime_error("error");
    <b>Second *res</b>=&m[f];
    <b>return res</b>; //здесь подчеркивает
}

Серьёзно? Чо в институтах уже перестали объяснять разницу между ссылкой и указателем?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
04 апр. 2020, в 09:54
1000 руб./за проект
04 апр. 2020, в 07:02
1000 руб./в час