0

我的老师给了我一个要学习的代码,我不知道什么时候我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

    //....
}
4

1 回答 1

7

好吧,原因很清楚:ri 不是类、命名空间或枚举。它是一个对象。

您需要将 typedef: type name放在分号之前。

map <string, string>::key_compare comp; 

或 (C++11)

decltype(ri)::key_compare comp; 
于 2015-12-21T13:33:44.493 回答