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;
}
助手(p)中的括号代表什么?我们如何迭代助手,因为助手是一个单一的对象
答案 0 :(得分:2)
Off是精神回答,因为我不知道ARRAY
到底是什么......
您的ARRAY
类模板似乎会重载函数调用运算符operator()
而不是索引运算符operator[]
。只需使用它就像那些()
括号中的正常数组索引括号[]
此外,您的代码清楚地显示了使用helpers
- 循环遍历for
的方法...
无论如何,为了获得进一步的帮助,我们需要看一些代码。
答案 1 :(得分:1)
helpers
是ARRAY
,其中第一个模板参数为T_CG_HELPER
。这可能意味着它是“T_CG_HELPERs的阵列”。
您没有向我们展示ARRAY
类的外观,因此无法知道如何迭代它。 helpers(p)
表示“在operator()
上调用helpers
函数,将p
作为参数传递”。