如何在其中创建一个包含值数组的结构?
我有类似的东西:
struct stuff {
int * list;
stuff {
list(int[5]) = {0, 1, 2, 3, 4};
}
}
这似乎可以用于存储,但在另一个文件中,我正在访问此数组:
stuff test;
std::cout << test.list[1];
这是给我一个分段错误。
答案 0 :(得分:3)
我想我明白你想要什么。以下是如何在C ++中实现的:
struct stuff {
std::vector<int> list;
stuff() : list({0, 1, 2, 3, 4}) {}
};
然后:
stuff test;
std::cout << test.list[1];
其中std::vector
是一个类似于数组的容器,可以(通过一些权衡)来存储可变的元素数组。如果您的元素具有固定大小(在您的情况下为5),则可以使用std::array
代替std::array<int, 5>
。
您可以从代码中获得的最接近的工作代码是:
struct stuff {
int* list;
stuff() : list(new int[5] {0, 1, 2, 3, 4}) {}
};
然而,这是一个可怕的主意。它引入了内存泄漏和残障语义(stuff a = stuff()
将导致共享内存,并可能导致UB稍后)。另一方面,std::vector
或std::array
尽可能安全(至少在内存安全级别上)。