【发布时间】:2018-05-20 03:39:54
【问题描述】:
#include <iostream>
using namespace std;
class Score{
public :
int scoreA,Aopsi=0;
void setAopsi(int a){
this->Aopsi = a;
}
void goalA(int a){
if (a==1)scoreA = scoreA + 1;
}
};
class A_action: public Score{
public :
int Akick(){
int opsi;
cout << "Team A Select where to kick : ";
cin >> opsi;
return opsi;
}
};
class A_after: public Score{
public :
int A_shot(){
cout << Aopsi <<endl;
int opsiA = 0; //i update the code for shorter code, so if goal opsiA = 1
return opsiA; //opsiA and Aopsi is different
}
};
int main(){
Score s;
A_action a;
A_after A;
s.setAopsi(a.Akick());
cout << s.Aopsi <<endl;
s.goalA(A.A_shot());
}
我做了一些关于足球点球的简单游戏
我有Aopsi。 Aopsi 是玩家 A 选择在哪里射击或稍后跳到哪里。
我设置了 Aopsi
s.setAopsi(a.Akick());
那我就叫它
当 Aopsi 调用 main 时,它被替换为我之前设置的内容。
但是当我在另一个类中调用时,值不会被替换。
例如,
玩家选择 2,然后 Aopsi 从 0 替换为 2。
我尝试在main 和A_after 类函数A_shot 上计算它。
那么输出就不一样了。
Aopsi main = 2
Aopsi A_shot = 0
应该是
Aopsi main = 2
Aopsi A_shot = 2
我必须使用继承。
【问题讨论】:
-
你试过使用调试器吗?
-
请仅发布不起作用的代码以及您期望发生的情况。现在,您的描述和您发布的代码令人困惑。您正在混合您所说的工作,不工作,已注释掉的行和未注释掉的行等。
-
您说您已经“在
s.setAopsi(b.Bkick())上设置Aopsi”,但您显示的代码中没有这样的声明。提供minimal reproducible example 意味着提供其他人可以用来重现您遇到的相同问题的代码。你没有提供,所以没有人可以提供帮助。 -
请不要更新“我上面写的是错的,应该是这个”。只需修正你写的内容,这样就正确了。
-
scoreA未初始化
标签: c++ inheritance