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

时间:2015-06-25 21:27:08

标签: c++ c++11 netbeans

我正在尝试在NetBeans中设置一个std::map<std::string, std::vector<int>> arrayInfo84类型的变量,但这会导致代码帮助抛出合适的说法

  

无法解析标识符arrayInfo84

     

意外的令牌:地图

     

意外的令牌:;

我的其他具有更基本数据类型的地图变量(即string int等)工作正常。这似乎是向量的一个问题。在有人问之前,是的,我的标题中有#include<vector>

我猜这是支持C ++ 11的一些问题。但是,我无法弄清楚如何解决这个问题。我的工具集是CygWin的最新版本。

1 个答案:

答案 0 :(得分:4)

问题可能在于定义:

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

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

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,以及代码分析器(如果它不会自动跟随编译器)。