Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 类数据成员不可访问_C++_Visual Studio 2010_Class_Compiler Errors_Syntax Error - Fatal编程技术网

C++ 类数据成员不可访问

C++ 类数据成员不可访问,c++,visual-studio-2010,class,compiler-errors,syntax-error,C++,Visual Studio 2010,Class,Compiler Errors,Syntax Error,我一辈子都搞不清楚这件事 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

我一辈子都搞不清楚这件事

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;
}
int-Warrior::攻击()
{
整数命中;
srand(时间(0));
如果(战士武器==6)
int hit=rand()%5+1;
else if(战士武器==7)
int hit=rand()%7+4;
else if(战士武器==8)
int hit=rand()%7+9;
否则如果(战士武器==9)
int hit=rand()%7+14;
否则如果(战士武器==10)
int hit=rand()%7+19;

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

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;
您最好使用
开关
语句,甚至是
%
+
值的成对数组

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];

在上面的数组中,当
武器
为8时,
模块[武器]
7
,而
添加[武器]
9
,与您的
if
语句中的数据相匹配。

如果不查看您的类定义,这是不可能的,但是您可能想要
这个->武器
,或者,正如@chris所说,如果它是静态的,
战士::武器
。此外,您只需要种子一次,而不是每次命中。您正在声明
命中
5次。您只需要一个赋值。删除这些行上的
int
关键字。在程序执行期间,您应该只调用
srand(time(0))
一次。非常感谢,是的,我将使用switch语句。