2015-12-21 104 views
-1

我的老师给了我一个代码来研究,我不知道当我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 

    //.... 
} 
+0

我没有看到一个'typedef'和'ri'是一个对象。 – Downvoter

+0

所以,你能告诉我什么“ri :: key_compare comp”吗? –

+0

它不会编译,因为'ri'不能用'::'工作,所以它不会有效。 – Downvoter

回答

6

好,原因很清楚:里是不是类,命名空间或枚举。这是一个对象。

你需要的是在分号之前放置你用typedef放置的东西:类型名称

map <string, string>::key_compare comp; 

或(C++ 11)

decltype(ri)::key_compare comp; 
+0

哇,ty!它的工作原理:D –

相关问题