【问题标题】:error: expected unqualified-id before numeric constant: std::array and std::vector size allocation错误:数字常量之前的预期非限定 ID:std::array 和 std::vector 大小分配
【发布时间】:2019-07-04 09:28:59
【问题描述】:

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

#define NUM_ROWS 3

以下是完整源码的pastebin链接:

Complete Source Code

编译错误是

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
                  ^

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

Compiler log

我在 Stack Overflow 上查找了相关错误,但在这些错误的情况下上下文似乎有所不同。在这种情况下,我打算使用宏来预定义std::arraystd::vector 对象的大小。我想过使用宏,因为我的理解是我应该使用常量来表示尺寸。

欣赏你的想法

【问题讨论】:

  • vector>(NUM_ROWS) 矩阵错误,试试vector> matrix(NUM_ROWS)
  • “我想到使用宏,因为我的理解是我应该使用常量来表示尺寸。”当你需要常量时,你应该使用常量而不是宏。 const int num_rows = 3; 怎么了?
  • 请在问题中包含代码和错误。链接可能会中断

标签: c++ macros


【解决方案1】:

一些可能对你有帮助的建议:

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>>&)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    相关资源
    最近更新 更多