2011-05-15 78 views
-1
template<class T,class TV> struct CONJUGATE_GRADIENTS_HELPER{ 
     DEFORMABLE_OBJECT<T,TV>* deformable_object; 
     int partition_id; 
     T time,dt; 
     T alpha,beta; 
     ARRAY<TV>* dX_full; 
     ARRAY<double> *S_dot_Q_partial,*rho_new_partial,*supnorm_partial; 
    }; 

    typedef CONJUGATE_GRADIENTS_HELPER<T,TV> T_CG_HELPER; 
    ARRAY<double> S_dot_Q_partial(particles.particle_ranges->m); 
    ARRAY<T_CG_HELPER> helpers(particles.particle_ranges->m); 

    for(int p=1;p<=particles.particle_ranges->m;p++){ 
      helpers(p).deformable_object=this; 
      helpers(p).partition_id=p; 
      helpers(p).time=time; 
      helpers(p).beta=beta; 
      helpers(p).S_dot_Q_partial=&S_dot_Q_partial; 
    } 

helpers(p)中的括號表示什麼?我們怎樣才能通過助手迭代,因爲助手是一個單一的對象template template as template class type

回答

2

關進通靈答案,因爲我不知道是什麼ARRAY到底是...

看來你ARRAY類模板重載函數調用操作符而不是索引運算符operator[]。只要使用它就好像那些()括號裏的正常數組索引括號[]
此外,你的代碼清楚地顯示的方式與for -loop遍歷helpers ...

總之,爲了進一步幫助,我們需要看到一些代碼。

1

helpersARRAY其中第一個模板參數是T_CG_HELPER。這可能意味着它是「T_CG_HELPERs的陣列」。

您沒有向我們展示ARRAY類的樣子,因此不可能知道如何迭代它。 helpers(p)的意思是「在helpers上調用operator()函數,通過p作爲參數」。

相關問題