c++ - 错误 "xxxx"没有命名类型

标签 c++ types

我在尝试编译以下代码时遇到问题:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>

using namespace std;

map<char, int> mapDial;

mapDial['A'] = 2;

int main()
{

  cout << mapDial['A'] << endl;
  return 0;
}

编译器给了我一个错误:'mapDial' does not name 类型错误。我是 c++ 的新手,真的不知道这里发生了什么。这里有人可以帮我解决这个问题吗?谢谢!!

最佳答案

你不能在全局范围内执行任意表达式,所以

mapDial['A'] = 2;

是非法的。如果你有 C++11,你可以这样做

map<char, int> mapDial {
    { 'A', 2 }
};

但如果您不这样做,则必须从 main 调用初始化函数以按照您想要的方式进行设置。您还可以查看带有迭代器的 map 的构造函数,并将其与函数中的数组一起使用以初始化 map ,例如

map<char, int> initMap() {
    static std::pair<char, int> data[] = {
        std::pair<char, int>('A', 2)
    };

    return map<char, int>(data, data + sizeof(data) / sizeof(*data));
}

map<char, int> mapDial = initMap();

关于c++ - 错误 "xxxx"没有命名类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13040212/

相关文章:

java - 使用 Hibernate 映射 boolean[] PostgreSql 列

使用 ppPasteMetafilePicture 时,C# vsto Powerpoint PasteSpecial 失败

sql-server-2008 - 有很多长文本字段的SQL表的最佳数据类型

c++ - 客户端服务器 API 交互

C++ 不命名为类型

类中的c++常量函数

c++ - 如何在 C++ 中获取不同 vector 的 vector

C++ 贷款合格金额

c# - 多种类型的数组 C#(包括其他数组)

rust - Const Generics - 如何确保 usize const > 0