Мой учитель дал мне код для изучения, и я не могу понять, когда я 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
//....
}
Ну, причина ясна ri не класс, пространство имен или перечисление. Это объект.
Вам нужно поместить перед точкой с запятой то, что вы положили с помощью typedef: имя типа.
map <string, string>::key_compare comp;
или (C ++ 11)
decltype(ri)::key_compare comp;
Других решений пока нет …