不是类、命名空间或枚举
Not a class, namespace or enumeration?
我的老师给了我一个要学习的代码,我不知道当我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:type-name放置的内容放在分号之前。
map <string, string>::key_compare comp;
或(C++11)
decltype(ri)::key_compare comp;
相关文章:
- 如何公开库的枚举,以便我的代码不必键入整个命名空间来使用该枚举?
- 如何理解c++中在命名空间内部定义的枚举类型enum
- C++-使用来自不同头文件、相同命名空间的枚举
- 访问向量字段的键 - 枚举类还是命名空间中的枚举?
- 枚举类不是类或命名空间
- 在命名空间中使用枚举
- 枚举、类、命名空间和长名称
- 解决枚举命名问题 - Qt
- C++11 枚举类命名空间块
- 类名和枚举值之间的冲突:无需命名空间即可解析
- 命名空间中的doxygen枚举
- 在不膨胀命名空间的情况下在C++中声明枚举的好方法
- 将C++命名空间枚举包装到C接口
- 在类中映射命名空间枚举
- 不是创建模板类后的类、命名空间或枚举
- 不同文件中同一命名空间中的 2 个不同枚举中的相同标识符
- 或命名空间中的枚举
- is_error_code_enum<>枚举必须仅在全局命名空间中定义?
- C++ 定义不同命名空间的枚举
- (C++)不能引用命名空间内的枚举类