【问题标题】:Errors C2512 & C3892 - Building PacMan like game错误 C2512 和 C3892 - 构建类似 PacMan 的游戏
【发布时间】:2015-04-28 12:07:41
【问题描述】:

我对编程比较陌生,所以请记住这一点。 我目前正在用 C++ 构建一个 2D PacMan 之类的游戏,但我遇到了上述错误。我正在尝试在我的游戏中实现一些僵尸,我已将其声明为“项目”,其中包含一个表示游戏中允许的最大僵尸数量的数组。以下是我的一些代码示例(已被删减,仅显示僵尸代码的有限部分):

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

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 你使用的是哪个编译器?
  • 你真的相信世界上每个操作系统的每个 C++ 编译器对每个编译错误都使用相同的错误代码吗?
  • @SamVarshavchik:他确实说过他对编程比较陌生...
  • @KieranW:你知道哪些行确切地导致了错误吗?
  • 不是直接相关的,但是看看 std::vector 和 std::list 来存储你的僵尸。如果僵尸是唯一可识别的,也许 std::map 也是如此。

标签: c++ variables constructor constants default-constructor


【解决方案1】:

您忘记包含相关的类定义:

struct Item {
        const char symbol;
        int x, y;
};

以及错误信息:

C2512: no appropriate default constructor available
C3892: you cannot assign to a variable that is const

symbolconst 所以,正如第二条错误消息所说,你不能分配给它。 const 成员也阻止了默认构造,因为这将无法为成员提供有效值;因此第一个错误。

您可以删除 const;或者,如果你想保留它,你必须用它们的值来初始化它们,而不是在初始化后分配给它们:

Item zombies[] = {
    {ZOMBIE, SIZEX - 19, SIZEY - 11},
    {ZOMBIE, SIZEX -  2, SIZEY - 11},
    {ZOMBIE, SIZEX - 19, SIZEY -  2},
    {ZOMBIE, SIZEX -  2, SIZEY -  2}
};

【讨论】:

    猜你喜欢
    • 2014-01-28
    • 2014-02-03
    • 1970-01-01
    • 2013-01-21
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 2022-01-12
    相关资源
    最近更新 更多