【发布时间】:2012-06-06 08:52:59
【问题描述】:
所以我正在使用 Allegro 制作游戏,并尝试创建一个代表棋盘的 ALLEGRO_BITMAP 类型对象的数组,这样我就可以在游戏开始时一次性加载所有图像文件而无需每次我想重绘它们时加载它们。我试图这样做:
ALLEGRO_BITMAP files[10];
得到以下编译错误:“字段的类型不完整 ALLEGRO_BITMAP”
我也试过了:
ALLEGRO_BITMAP* files = new ALLEGRO_BITMAP[10];
得到编译错误:'Allocation of Complete type ALLEGRO_BITMAP'
我觉得这与编译器不知道 ALLEGRO_BITMAP 类型的大小有关,因此不知道如何为这种类型的数组分配内存(但如果我错了,请有人纠正我) .我想知道是否有人知道解决这个问题的方法?或者另一种方法来实现我预先存储 ALLEGRO_BITMAP 对象的目标,而不是在我想重绘图块时加载图像文件?我显然可以创建 10 个不同的变量并将文件存储在其中,但这很糟糕。我也尝试过使用向量,但这些也不起作用。
【问题讨论】:
-
您似乎缺少一些包含指令。编译器不知道 ALLEGRO_BITMAP 类型。检查您的加入。
-
@Heisenbug 我的包含很好,并添加以下行:'ALLEGRO_BITMAP * b;'编译得很好。只有当我尝试分配一个数组时。
-
我猜你刚刚转发了它。所以你可以使用指针但不能分配,因为你实际上不知道结构的大小。
-
@Heisenbug 我的想法完全一致,但我希望得到某种确认/解决方案。也许其他人可以证实这个理论?
-
解决方案是删除前向声明(如果有),并在定义中包含头文件。抱歉,我不知道是哪个文件,我根本不知道 allegro。尝试用谷歌搜索它。
标签: c++ arrays memory-management allegro