问题是这样的: 我首先建立一个类“ScoreEnergy”,RuShe[]和FanShe[]数组是私有成员变量,在另一个类中调用该类中的函数“SetRuShe()”“SetFanShe()”给这两个数组赋值操作,然后在这些操作结束后,在另一个类中调用函数“GetNengPu()”输出结果,但是发现输出只有0,也就是这两个数组的值没有发生改变,还是在构造函数中写的那样。这是为什么呢?改成指针等都没有用。
ScoreEnergy::ScoreEnergy(){
E_min=1.77*eV;
E_num=sizeof(RuShe)/sizeof(RuShe[0]);
E_step=0.01*eV;
for(int i=0;i<E_num;i++){
RuShe[i]=0;
FanShe[i]=0;
}
}
void ScoreEnergy::SetRuShe(G4double val){//val: shi guo qu de guang zi neng liang
int i=floor((val-E_min)/E_step);
RuShe[i]++;
}
void ScoreEnergy::SetFanShe(G4double val){
int i=floor((val-E_min)/E_step);
FanShe[i]++;
}
void ScoreEnergy::GetNengPu(){
ofstream fout("NengPu.txt",ios::app);
for(int i=0;i<E_num;i++){
G4double Energy=E_min+E_step*i;
G4cout<<"GetNengPu RuShe["<<i<<"] = "<<RuShe[i]<<G4endl;
if(RuShe[i]==0)
{fout<<Energy/eV<<" "<<0<<G4endl;}
else
{
double FR=FanShe[i]/RuShe[i];
G4cout<<" FR = "<<FR<<G4endl;
fout<<Energy/eV<<" "<<FR<<G4endl;}
}
fout.close();
fout.clear();
}