c++ - 在结构中定义固定大小的数组

标签 c++ arrays struct static-members

我在一个类中定义了一个结构。其中一个成员是一个给定大小的数组。

class foo {
private:
  int N;
  struct entry {
    uint64_t pc;
    uint64_t offset;
    bool pattern [N];
  };
public:
  void bar()
  {
   entry en;
   en.pc = 1;
   en.offset = 2;
   en.pattern[en.pc] = 1;
  }
};

但是错误是

error: invalid use of non-static data member ‘N’

最佳答案

C++ 不支持变长数组。 N 必须在编译时已知。另一种方法是使用 std::vector

class foo {
private:
  int N;
  struct entry {
    uint64_t pc;
    uint64_t offset;
    std::vector<int> pattern;
  };
public:
  void bar()
  {
   N = 100; //don't forget to initialize N
   entry en;
   en.pc = 1;
   en.offset = 2;
   en.pattern.resize(N);
   en.pattern[en.pc] = 1;
  }
};

关于c++ - 在结构中定义固定大小的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13158280/

相关文章:

c - 结构数组和 malloc [C]

c - 如何将结构插入到 C 中的哈希函数中?

c++ - 我的第一个 CPP 程序的问题 - 标题和源代码

c++ - 在同一代码中放置新的和新的

java - 我的 stack 类中的 push() 会改变堆栈中的每个元素

javascript - 如何将一个很长的 for 循环分解成更小、更易读但仍能执行的部分?

python - 10 个骰子的总和功能不起作用?只返回第一卷

c++ - cuDNN 必须要有平台吗?

c++ - MFC:隐藏工具栏按钮

c++ - 需要帮助将 C 字符串从嵌入式 SQL 提取复制到单独结构中的另一个 C 字符串