我没有找到足够的信息来帮助我解决问题,但我看了很多地方。基本上,我想要一个16 * 16 * 256个类的三维数组。这导致堆栈溢出,所以我尝试了一个向量但是也崩溃了。最后,我试图通过三指针,双指针和单指针分配堆内存。
/* Values chunkX, chunkY, chunkZ used below are static constant integers*/
Block*** blocks;
blocks = new Block**[chunkX];
for (int i = 0; i < chunkX; i++) {//Initialize all arrays
blocks[i] = new Block*[chunkZ];
for (int u = 0; u < chunkZ; u++) {
blocks[i][u] = new Block[chunkY];
}
}
这对我有意义但可能不正确。 C2040 错误位于首次定义 blocks 的行。
稍后在代码中,我尝试:
Block& block = blocks[x][z][y];
但它告诉我 C2530 &#39;阻止&#39;:引用必须初始化 ...即使我在上面初始化它们?然后它因为这两个错误而停止编译。我很困惑,无法使用 new 找到任何三指针教程。我不认为我想要的内存量是不合理的,因为Block类并不是很大。
编辑(解决): 显然这不是代码问题,而只是编译器的问题。它现在编译而不做任何更改。感谢您的评论,并对给您带来的不便表示歉意。