c ++二维向量语法错误

时间:2015-10-16 12:09:54

标签: c++ c++11

我有一个common.h文件:

typedef enum {
  num_letters = 26,
  num_directions = 2
} constants;

和另一个类的.h文件:

#include "Common.h"
using namespace common;
... some code ...
    vector< vector<uint> > data(constants::num_directions, vector<uint>(constants::num_letters, 0));

我检查了vector的语法,它应该是正确的;我也在使用c ++ 11 std;但是,它给了我以下错误:

error: 'constants::num_directions' is not a type
     vector< vector<uint> > data(constants::num_directions, vector<uint>(constants::num_letters, 0));

 error: expected unqualified-id before ',' token
     vector< vector<uint> > data(constants::num_directions, vector<uint>(constants::num_letters, 0));
                                                                                               ^
error: expected ')' before ',' token
 error: expected ')' before ',' token
 error: expected unqualified-id before numeric constant
     vector< vector<uint> > data(constants::num_directions, vector<uint>(constants::num_letters, 0));

我不确定为什么会这样,非常感谢你提前!

1 个答案:

答案 0 :(得分:0)

您没有提供足够的代码来可靠地重现您的问题,因此我冒昧地猜测:

从编译器发出的错误消息中看起来好像它将整行解释为函数声明而不是变量定义。这可能是因为,正如评论中指出的那样,constants::num_directions不是使用普通枚举的枚举器的有效方法。所以编译器像函数声明

一样解析该行
ResultType f(ArgType1, Argtype2(argname2))

如果ResultTyoe为vector<vector<uint>>ArgType1constants::num_directions且无法识别为ArgType2,则vector<uint> public EFDbContext() :base("EFDbContext") { this.Configuration.ProxyCreationEnabled = true; this.Configuration.LazyLoadingEnabled = false; } ,然后因为它可以完全丢失不要做其余部分的头部或尾部。