我在一个类中定义了一个结构。其中一个成员是一个给定大小的数组。
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/