我对编程比较陌生,所以请记住这一点。 我目前正在用C ++构建一个类似2D PacMan的游戏但是我遇到了上述错误。我试图在我的游戏中实现一些僵尸,我已经声明它是一个带有数组的'Item'来表示游戏中允许的最大僵尸数量。以下是我的代码的一些示例(这已被缩减为仅显示僵尸代码的有限部分):
const char ZOMBIE('Z');
const int MAXZOMBIES(4);
int main()
{
Item zombies[MAXZOMBIES];
int numZombies(4);
}
void setZombiesInitialCoordinates(Item zombies[])
{
//Setting zombie coordinates for top left of grid
zombies[0].symbol = ZOMBIE;
zombies[0].x = (SIZEX - 19);
zombies[0].y = (SIZEY - 11);
//Setting zombie coordinates for top right of grid
zombies[1].symbol = ZOMBIE;
zombies[1].x = (SIZEX - 2);
zombies[1].y = (SIZEY - 11);
//Setting zombie coordinates for bottom left of grid
zombies[2].symbol = ZOMBIE;
zombies[2].x = (SIZEX - 19);
zombies[2].y = (SIZEY - 2);
//Setting zombie coordinates for bottom right of grid
zombies[3].symbol = ZOMBIE;
zombies[3].x = (SIZEX - 2);
zombies[3].y = (SIZEY - 2);
}
如果这会使事情变得更容易,可以在pastebin上查看整个代码:http://pastebin.com/1kFTD2Mr
非常感谢任何帮助。感谢。
答案 0 :(得分:0)
您忘记包含相关的课程定义:
struct Item {
const char symbol;
int x, y;
};
和错误消息:
C2512: no appropriate default constructor available
C3892: you cannot assign to a variable that is const
symbol
为const
因此,正如第二条错误消息所示,您无法分配给它。 const
成员也会阻止默认构造,因为这样就无法给成员一个有效的值;因此第一个错误。
您可以删除const
;或者,如果你想保留它,你必须用它们的值初始化项目,而不是在初始化后分配给它们:
Item zombies[] = {
{ZOMBIE, SIZEX - 19, SIZEY - 11},
{ZOMBIE, SIZEX - 2, SIZEY - 11},
{ZOMBIE, SIZEX - 19, SIZEY - 2},
{ZOMBIE, SIZEX - 2, SIZEY - 2}
};