嵌套结构/在另一个结构中使用结构

时间:2013-08-31 16:53:52

标签: c++ class struct nested

我尝试了很多东西,但我一直都遇到同样的错误。首先,我想说我没有做任何与口袋妖怪有关的事情,因为我的技能显然不够好,这只是我能想到的最实际的例子来理解并理解其他人

struct pokeDex {
            struct pokemonTemplate {
            std::string pokemonName;
            std::string pokemonMoves[3];
            int pokemonLevel;
            int baseATK;
            int baseDEF;
            int baseSPATK;
            int baseSPDEF;
            int baseSPEED;
            };

            pokemonTemplate Bulbasaur;
            Bulbasaur.pokemonName = "Bulbasaur";
            Bulbasaur.pokemonLevel = 5;
            Bulbasaur.baseATK = Bulbasaur.pokemonLevel * 10;
            Bulbasaur.baseDEF = Bulbasaur.pokemonLevel * 10;
            Bulbasaur.baseSPATK = Bulbasaur.pokemonLevel * 10;
            Bulbasaur.baseSPDEF = Bulbasaur.pokemonLevel * 10;
            Bulbasaur.baseSPEED = Bulbasaur.pokemonLevel * 10;

            pokemonTemplate Pikachu;
            Pikachu.pokemonName = "Pikachu";
            Pikachu.pokemonLevel = 5;
            Pikachu.baseATK = Pikachu.pokemonLevel * 7;
            Pikachu.baseDEF = Pikachu.pokemonLevel * 10;
            Pikachu.baseSPATK = Pikachu.pokemonLevel * 12;
            Pikachu.baseSPDEF = Pikachu.pokemonLevel * 6;
            Pikachu.baseSPEED = Pikachu.pokemonLevel * 15;
        };

我一直收到错误“错误:”Bulbasaur“/”Pikachu“没有命名类型。” 我已经看到了关于这个问题的多个问题,但是他们都没有修复它。我已经尝试将结构分开,只是引用pokeDex结构中的pokemonTemplate结构,但这不起作用。

我也试过让pokeDex成为一个类而不是一个结构体,并且我尝试在类之外使用pokemonTemplate结构,并且在类内部,但我继续得到错误。每次,在引用它之前我一直小心定义pokemonTemplate结构,但我一定做错了。

1 个答案:

答案 0 :(得分:0)

您无法在class/struct声明中初始化(实际上是这里的作业)成员 删除您正在执行的所有初始化。除了嵌套的struct应该正常工作。

将代码更改为以下内容:

struct pokeDex 
{
    struct pokemonTemplate 
    {
      std::string pokemonName;
      std::string pokemonMoves[3];
      int pokemonLevel;
      int baseATK;
      int baseDEF;
      int baseSPATK;
      int baseSPDEF;
      int baseSPEED;
    };
    pokemonTemplate Bulbasaur;
    pokemonTemplate Pikachu;
};

并编写自己的constructor来初始化它们或使用一些setter方法来完成工作。