想法是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不完整
我能再听一些人的暗示吗

最佳答案

交换定义MapGeneratorMapGrid类的顺序。您正在尝试在MapGenerator构造函数中使用MapGrid类,但是该类仅在下面进一步定义。

更新:好的,现在您重写了问题,这是另一个猜测(您的代码实际上并未编译,所以我只能猜测):MapGeneratorMapGrid是否可能位于不同的头文件和头文件中MapGrid的文件,您只有MapGenerator的前向声明,而不是实际的定义(通过包含MapGenerator的标头可以得到)?

10-07 21:02