This question already has answers here:
Range-based for loop and std::vector.push_back() crashing the program
(2个答案)
去年关闭。
我一直在编写引擎并遇到问题,我的代码中遇到读取访问冲突。我不知道为什么,但是当我在这个代码块中添加
变成...
所有帮助赞赏。
编辑:这是正确的方法。
如果要初始化MAX_CHUNKS,则:
(2个答案)
去年关闭。
我一直在编写引擎并遇到问题,我的代码中遇到读取访问冲突。我不知道为什么,但是当我在这个代码块中添加
this->chunks.push_back(chunk);
时会发生,void c_world::generate_world()
{
this->chunks.resize(MAX_CHUNKS);
for (auto chunk : this->chunks)
{
chunk.setup_landscape();
}
}
变成...
void c_world::generate_world()
{
this->chunks.resize(MAX_CHUNKS);
for (auto chunk : this->chunks)
{
chunk.setup_landscape();
this->chunks.push_back(chunk);
}
}
this->chunks
是作为自定义类的std::vector<c_chunk>
(c_chunk)。谢谢!所有帮助赞赏。
编辑:这是正确的方法。
void c_world::generate_world()
{
for (std::uint32_t i = 0; i < MAX_CHUNKS; i++)
{
c_chunk chunk[MAX_CHUNKS];
chunk[i].setup_landscape();
this->chunks.push_back(chunk[i]);
}
}
最佳答案
其他人说过为什么您的程序崩溃。这取决于您要确切地执行两种可能的解决方案:
如果要先初始化MAX_CHUNKS,然后再初始化MAX_CHUNKS,请使用简单的for循环。
void c_world::generate_world()
{
this->chunks.resize(MAX_CHUNKS);
for (int i = 0;i < MAX_CHUNKS;i++)
{
this->chunks.push_back(this->chunks[i])
this->chunks[i+MAX_CHUNKS].setup_landscape();
}
}
如果要初始化MAX_CHUNKS,则:
void c_world::generate_world()
{
this->chunks.resize(MAX_CHUNKS);
for(auto &chunk : this->chunks)
chunk.setup_landscape();
}
关于c++ - 每个循环的读取访问冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49077897/
10-13 03:31