3

我这辈子都想不通。

int Warrior :: attack ()
{
  int hit;
  srand(time(0));

if (Warrior.weapon == 6)
    int hit = rand() % 5 + 1;
else if (Warrior.weapon == 7)
    int hit = rand() % 7 + 4;
else if (Warrior.weapon == 8)
    int hit = rand() % 7 + 9;
else if (Warrior.weapon == 9)
    int hit = rand() % 7 + 14;
else if (Warrior.weapon == 10)
    int hit = rand() % 7 + 19;

std::cout<< "You hit " << hit <<"!\n";

return hit;
}

我收到此错误:(Error C2059: syntax error : '.' 我也知道我应该使用switch语句而不是else if

谢谢你。

4

1 回答 1

9

Warrior是类的名称。如果您在成员函数内部,则不需要使用类的名称来限定数据成员。您还应该hit在 if-then-else 链之前声明:

int hit;
if (weapon == 6)
    hit = rand() % 5 + 1;
else if (weapon == 7)
    hit = rand() % 7 + 4;
else if (weapon == 8)
    hit = rand() % 7 + 9;
else if (weapon == 9)
    hit = rand() % 7 + 14;
else if (weapon == 10)
    hit = rand() % 7 + 19;

您可能会更好地使用一个switch语句,甚至是一组 for%+values 对。

int mod[] = {0,0,0,0,0,0,5,7,7,7,7};
int add[] = {0,0,0,0,0,0,1,4,9,14,19};
int hit = rand() % mod[weapon] + add[weapon];

在上面的数组中,当weaponis 时,比如 8,mod[weapon]is7add[weapon]is与语句9中的数据相匹配。if

于 2012-09-18T21:37:08.580 回答