Не класс, пространство имен или перечисление?

Мой учитель дал мне код для изучения, и я не могу понять, когда я typedef карта (как я прокомментировал в коде) работает нормально, но когда я определяю без typedef это не похоже на работу. Если кто-то может быть добрым, чтобы объяснить, я был бы благодарен! Я читал кое-что о «циклической зависимости», но не уверен, что это так.

int main (){

map <string, string> ri; // typedef map<string, string> maps;
//maps ri;
ri.insert(pair<string, string>{"Smoljan", "Dragan"});
ri.insert(pair<string, string>{"Smolver", "Tina"});
ri.insert(pair<string, string>{"Mirkovic", "Sonja"});

string in;
cout<<"Input:";
cin>>in;

string high(in);
high.back()++;

auto low = ri.lower_bound(in);

/*(maps)*/ ri::key_compare comp;  //<----- here is the error

//....
}

-1

Решение

Ну, причина ясна ri не класс, пространство имен или перечисление. Это объект.

Вам нужно поместить перед точкой с запятой то, что вы положили с помощью typedef: имя типа.

map <string, string>::key_compare comp;

или (C ++ 11)

decltype(ri)::key_compare comp;
6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]