想法是MapGrid创建并保存带有地图元素的2d数组,我想将该数组提供给另一个类MapGenerator,以便它通过在其中编辑正方形元素来生成真实地图。
class MapGenerator {
private:
int MAP_HEIGHT;
int MAP_WIDTH;
Square * worldMap;
void cmdGenerateHeightMap() {
worldMap[i][j]->decraseHeight();
......
}
public:
MapGenerator(Square &myMap, int maxHeight, maxWidth) {
MAP_WIDTH = maxWidth
MAP_HEIGHT = maxHeight;
worldMap = &myMap;
cmdGenerateHeightMap();
}
}
class MapGrid {
private:
static const int MAP_HEIGHT = 100;
static const int MAP_WIDTH = 100;
Square worldMap[MAP_HEIGHT][MAP_WIDTH];
public:
MapGrid() {
for (int i=0; i<MAP_HEIGHT;i++) {
for (int j=0;j<MAP_WIDTH; j++) {
worldMap[i][j] = Square();
}
}
MapGenerator myMap(worldMap);
}
void PrintMyMap() {
//print what the map MapGenerator made
}
}
我收到此错误消息:变量“ MapGenerator myMap”具有初始化程序,但类型map.h不完整
我能再听一些人的暗示吗
最佳答案
交换定义MapGenerator
和MapGrid
类的顺序。您正在尝试在MapGenerator
构造函数中使用MapGrid
类,但是该类仅在下面进一步定义。
更新:好的,现在您重写了问题,这是另一个猜测(您的代码实际上并未编译,所以我只能猜测):MapGenerator
和MapGrid
是否可能位于不同的头文件和头文件中MapGrid
的文件,您只有MapGenerator
的前向声明,而不是实际的定义(通过包含MapGenerator
的标头可以得到)?