Netbeans IDE 8.0.2 C++代码辅助问题映射与向量值声明

Netbeans IDE 8.0.2 C++ Code Assistance Issues Map with Vector Value Declaration

本文关键字:映射 问题 向量 声明 IDE 代码 C++ Netbeans      更新时间:2023-10-16

我正试图在NetBeans中设置一个类型为std::map<std::string, std::vector<int>> arrayInfo84的变量,但这导致代码援助抛出一个问题,说

无法解析标识符数组Info84

意外的令牌:映射

意外的令牌:;

我的其他具有更基本数据类型的映射变量(即stringint等)工作良好。这似乎是矢量的问题。在有人问之前,是的,我的头上确实有#include<vector>

我猜这是支持C++11的问题。然而,我不知道如何解决这个问题。我的工具集是CygWin的最新版本。

问题可能在于定义:

std::map<std::string, std::vector<int>> arrayInfo84;
//                              here ^^ is the problem

最后一个标记是>>,在C++11(C++98/C++03)之前,它被解析为移位运算符。这是因为C++使用了所谓的"最大咀嚼原则"。由于这个事实,嵌套模板总是使用> >作为分隔符,所以上面的声明应该是

std::map<std::string, std::vector<int> > arrayInfo84;
//    note the additional space here ^^^

然而,C++11放宽了规则,现在允许使用>>作为嵌套模板的分隔符,因此您的定义在C++11中有效,但在C++98/C++03中无效。

您的Netbeans代码分析器可能不遵循最新的C++11规则,这就是您可能收到警告的原因。确保为编译器配置对C++11的支持,比如传递标志-std=c++11,以及代码分析器(如果它不是自动跟随编译器)。