我有任务我有完整的代码,但下面的代码段如下。

用户必须在以下弹丸之间进行选择。
每个弹丸都有爆炸半径,这是我到目前为止的代码(对于本节):

userProjectileChoice = myProjectiles[3];

myProjectiles[0].projectileName = "cannonBall";
myProjectiles[0].blastRadius = 10;

myProjectiles[1].projectileName = "highExplosiveShell";
myProjectiles[1].blastRadius = 1;

myProjectiles[2].projectileName = "mortarBomb";
myProjectiles[2].blastRadius = 1000;


我需要使用所需的结构。
错误消息是:incompatible types when assigning to type int from type struct

包含以下内容,因此您可以查看上面的代码指的是什么。

弹体名称尚未声明,我是否在上面的编码中声明了它?

struct Projectile
{
  char name[40];
  float blastRadius;
};

float blastRadius;
double cannonBall = 0;
double highExplosiveShell = 1;
double mortarBomb = 2;

struct Projectile myProjectiles[3] = {{"cannonBall",0},{"highExplosiveShell", 1},{"mortarBomb", 2}};


任何帮助将不胜感激,但请让我保持其简单易懂,就像我在新来之前所说的那样。

最佳答案

我不确定userProjectileChoice是什么类型,因此我将假定它与myProjectiles数组的类型相同。尝试一次为每个属性分配一个,如下所示:
userProjectileChoice.projectName = myProjectiles[3].projectileName
userProjectileChoice.blastRadius= myProjectiles[3].blastRadius

自从我用C编程已经有好几年了,但是值得一试。

也许您的意思是分配“索引”而不是整个结构。就像我说的那样,当我不知道userProjectileChoice的类型时,很难给出正确的答案。也许您的问题出在代码开头的赋值中。因此,如果选择了第四个选择,则应为:
userProjectileChoice = 3

关于c - 需要错误消息的协助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39561643/

10-09 20:36