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

问题描述

关于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;  */
            }

          }

        }

}

解决方案

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

时间: 2016-07-19

vector&amp;lt;&amp;gt; const-关于Vector&amp;lt;&amp;gt;和interator中的无效转换问题.的相关文章

c++的问题-C++类中定义 const static 成员变量为啥在VC++6.0中 编译不过

问题描述 C++类中定义 const static 成员变量为啥在VC++6.0中 编译不过 class GradeBook { public: //constant -- number of students who took the test const static int students = 0; //constructor initialize course name and array of grades GradeBook( string, const int [] ); voi

c++中vector&amp;amp;lt;int&amp;amp;gt;和vector&amp;amp;lt;int*&amp;amp;gt;的用法区别_C 语言

在使用STL容器(比如map.list.vector等)的时候,是用放一个对象还是放一个对象指针,即是用vector<int>还是vector<int*>,这里的vector可以换成其他的容器,int可以换成其他基本类型,也可以自定义的数据结构或类. 首先,要说明的是,这两种方式,怎么用都可以实现功能,把一组整型数放到容器里.先看看两种方式在使用的时候的区别. 1.vector<int> 复制代码 代码如下: vector<int> vecTemp;for

vector 死机 m finish-_M_finish异常导致vector死机问题

问题描述 _M_finish异常导致vector死机问题 m_pktList = {std::_Vector_base<CFrame::tagFramePktNode,std::allocator<CFrame::tagFramePktNode >> = {M_impl = {std::allocator<CFrame::tagFramePktNode> = {<_gnu_cxx::new_allocatorCFrame::tagFramePktNode>

caffe: fuck compile error again : error: a value of type &quot;const float *&quot; cannot be used to initialize an entity of type &quot;float *&quot;

[email protected]:~/Downloads/caffe-master$ make -j8find: `wangxiao/bvlc_alexnet/spl': No such file or directoryfind: `caffemodel': No such file or directoryfind: `wangxiao/bvlc_alexnet/0.77': No such file or directoryfind: `caffemodel': No su

QString和string类型相互转换

在使用QT和C++进行开发的时候,由于两者的数据类型不完全相同,需要进行转换.下面介绍QString和string类型相互转换的方法.(QT4.6上已测试可用.) 1.在头文件中添加inlucde信息和转换函数声明: #include <QString> #include <vector> #include <iostream> #include <string> using namespace std; QString s2q(const string &

Dijkstra最短路径算法实现代码_C 语言

Dijkstra的最短路径算法是基于前驱顶点的最短路径计算的,整体上来讲还是比较简单的,下面是代码: 复制代码 代码如下: #include <iostream>#include <vector>#include <limits> void shortestpath( const std::vector <std::vector< short> >& paths, int from, std::vector< short>&a

iostream与iostream.h的区别详细解析_C 语言

C++的标准类库被修订了两次,有两个标准 C92和C99,这两个库现在都在并行使用,用 .h 包含的是c92 ,不带 .h 的是c99的头文件,对于普通用户来说这两者没有什么区别,区别是在内部函数的具体实现上.旧的C++头文件是官方明确反对使用的,但旧的C头文件则没有(以保持对C的兼容性).据说从 Visual C++ .NET 2003 开始,移除了旧的 iostream 库.其实编译器制造商不会停止对客户现有软件提供支持,所以在可以预计的将来,旧的C++头文件还会嚣张一段时间.如果能明白字符

B样条基函数&amp;mdash;&amp;mdash;B-Spline Basis Functions

B-Spline Basis Functions [email protected]     摘要Abstract:直接根据B样条的Cox-deBoor递推定义写出计算B样条基函数的程序,并将计算结果在OpenSceneGraph中显示.    关键字Key Words:B Spline Basis Functions.OpenSceneGraph 一.概述Overview 有很多方法可以用来定义B样条基函数以及证明它的一些重要性质.例如,可以采用截尾幂函数的差商定义,开花定义,以及由de Boor和C

C++ little errors , Big problem

------------------------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------------------------------------------------------------------------