C++使用GMP库时范围for循环报name未声明错误如何解决?
这个报错和GMP库没有任何关系,是你错误使用C++ for循环语法导致的。
你写的是C范围for循环的语法结构,这类循环要求冒号右侧必须是支持迭代的序列对象(比如数组、STL容器等)。同时C的变量声明解析规则是:编译器会先解析冒号右侧的表达式,再处理左侧的变量定义逻辑,你在右侧表达式中直接使用了还未完成声明的name变量,自然会触发未声明的报错。
你之前针对unordered_map运行的逻辑肯定不是这种写法,大概率是你混淆了「遍历容器的范围for循环」和「读取文件流的循环」的写法。
将报错行替换为以下代码即可解决问题:
std::string name; mpz_class num; while (names_file >> name >> num) { number_names[num] = name; }
内容的提问来源于stack exchange,提问作者VinDiesel_
相关产品推荐
相关产品推荐

