sinat_25501823 2015-10-09 15:23 采纳率: 0%
浏览 1585

关于Vector<>和interator中的无效转换问题.

本人在使用GEANT4模拟,以下为部分相关程序.目的是获得次级粒子的能量等信息,当gamma被kill或stop后,开始追踪次级粒子,并加以筛选获得输出文件.然而在编译的时候出现了以下报错:**error: invalid conversion from ‘const G4TrackVector* {aka const std::vector}’ to ‘G4TrackVector {aka std::vector}’ [-fpermissive]
G4TrackVector
fpTrackVector = fStep->GetSecondary(); **
^
求各位帮我看看,感激不尽呀,由于金币不足,待日后补齐各位热心人.****

//do the calculation of energy deposition

G4TrackVector* fpTrackVector = fStep->GetSecondary();
G4TrackStatus TrackStatus = fTrack->GetTrackStatus();
if ( particle == "neutron" && TrackStatus == fStopAndKill ){

        G4int i;
        vector <G4Track*>::const_iterator itr;
        G4int tv_size = fpTrackVector->size ();
        itr = fpTrackVector->begin ();
        if( tv_size )
        {
            for ( i=0;i<tv_size;i++){ //why not "<="?
                G4Track* secondaryTrack = *(itr+i);

                G4double sec_x = secondaryTrack->GetPosition().x()/mm;
                G4double sec_y = secondaryTrack->GetPosition().y()/mm;
                G4double sec_z = secondaryTrack->GetPosition().z()/mm;

                G4String sec_name = secondaryTrack->GetDefinition()->GetParticleName();
                G4String sec_volume = secondaryTrack->GetVolume()->GetName();
                G4double sec_kineticEnergy = secondaryTrack->GetKineticEnergy()/MeV;
                G4double sec_totalEnergy = secondaryTrack->GetTotalEnergy()/MeV;
                G4String sec_process = secondaryTrack->GetProcessName();

                if( sec_volume == "Scatter" && sec_name == "alpha" ){
                  G4int SL = sec_name.size( );
                    //fUserDataFile->func();
                    fUserDataFile->AddElectronInitial ( eventNum, SL, sec_name, sec_x, sec_y, sec_z, sec_kineticEnergy );
                //fUserDataFile->func();
                //G4cout << "step!" << G4endl;  */
            }

          }

        }

}
  • 写回答

1条回答 默认 最新

  • yangbo50304 2015-10-10 02:49
    关注

    G4TrackVector* fpTrackVector = fStep->GetSecondary();
    看编译错误,是这句话的问题,能把GetSecondary()方法的代码贴下么?GetSecondary()函数是不是返回的是const类型的vector指针,
    改成const G4TrackVector* fpTrackVector = fStep->GetSecondary(); 试试

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!