CollidingCloud构造函数后面的 CloudType()是什么?
- 
							
							
							
							
- 
							
							
							
							
							
							
- 
							
							
							
							
@bestucan 老师您好,我想请教一下kinematicCloud.H 里面的274行 template<class TrackCloudType> void solve ( TrackCloudType& cloud, typename parcelType::trackingData& td );TrackCloudType& cloud,里面的cloud是在cloud.H里面定义的类,但是在kinematicCloud.C 里面的140行直接调用了kinematicCloud类的成员函数cloud.preEvolve(td)。这是为什么呢?还是说这里的cloud指的就是kinematicCloud? 
- 
							
							
							
							
这个 cloud 是一个 TrackCloudType 类的引用, 这个 TrackCloudType 具体是什么,看调用 solve 函数的时候这里填的是什么类的引用, 用 preEolve 没法判断,因为这是个模板函数,符合模板的类八成有共同的机构,要不编译也过不去。就是说,不只 kinematicCloud 有 preEvolve 这个函数。 但是在kinematicCloud.C 里面的140行直接调用了kinematicCloud类的成员函数cloud.preEvolve(td)。 cloud.preEvolve(td) 不是 kinematicCloud 的成员函数。 cloud 是 TrackCloudType& 类型的变量,具体 TrackCloudType 取决于调用。 preEvolve 是 cloud 的成员函数 要想通过 preEolve 判断 cloud 的可能类型,可以直接搜这个函数 
  或者看调用 solve 的时候,第一个参数填的具体是什么 
- 
							
							
							
							
@bestucan 刚看了一下CollidingCloud.C,引用了solve函数: template<class CloudType> void Foam::CollidingCloud<CloudType>::evolve() { if (this->solution().canEvolve()) { typename parcelType::trackingData td(*this); this->solve(*this, td); } }我个人的理解是,这里的*this指针指的就是CollidingCloud,因此cloud.preEvolve就是CollidingCloud.preEvolve, 而preEvolve是KinematicCloud的public的成员函数,CollidingCloud是其衍生类,因此可以直接调用了preEvolve函数 
 
			
