错误:数字常数之前的预期无限制ID:std :: array和std ::向量大小分配

error: expected unqualified-id before numeric constant: std::array and std::vector size allocation

本文关键字:std array 向量 分配 ID 无限制 常数之 数字 错误      更新时间:2023-10-16

错误源于我的代码中的宏定义:

#define NUM_ROWS 3

以下是完整源代码的Pastebin链接:

完成源代码

编译误差为

code.cpp:14:18: error: expected unqualified-id before numeric constant
 #define NUM_ROWS 3
                  ^
code.cpp:19:29: note: in expansion of macro ‘NUM_ROWS’
 vector<array<int,NUM_COLS>>(NUM_ROWS) matrix;
                             ^~~~~~~~
code.cpp:14:18: error: expected ‘)’ before numeric constant
 #define NUM_ROWS 3
                  ^

以下是编译器日志的粘贴链接:

编译器日志

我在堆栈溢出上查找了相关的错误,但是在这些错误的情况下,上下文似乎有所不同。在这种情况下,我打算使用宏来预定std::arraystd::vector对象的大小。我想到使用宏,因为我的理解是我应该将常数用于大小。

感谢您的想法

一些可能对您有帮助的指针:

vector<array<int,NUM_COLS>>(NUM_ROWS) matrix;

是错误的,构造具有NUM_ROWS元素的std::vector的正确方法是

vector<array<int,NUM_COLS>> matrix(NUM_ROWS);

其次,我观看了您的代码(您可能需要将其添加到后代的问题中(

void set_matrix(vector<array<int,NUM_COLS>>(NUM_ROWS)&)

和类似定义的函数,将不起作用NUM_ROWS不是vector类型的一部分,请尝试

void set_matrix(vector<array<int,NUM_COLS>>&)