我尝试了很多东西,但我一直都遇到同样的错误。首先,我想说我没有做任何与口袋妖怪有关的事情,因为我的技能显然不够好,这只是我能想到的最实际的例子来理解并理解其他人
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结构,但我一定做错了。
答案 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方法来完成工作。