[英]template struct as template class type
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)中的括号代表什么? 我们怎样才能通过助手迭代,因为助手是一个单一的对象
心理答案消失了,因为我不知道ARRAY
到底是什么...
看来您的ARRAY
类模板使函数调用operator operator()
而不是索引operator operator[]
。 只需将其用作普通数组索引括号[]
那些()
括号即可。
另外,您的代码清楚地显示了一种使用for
-loop遍历helpers
的for
。
无论如何,要获得进一步的帮助,我们需要查看一些代码。
helpers
是一个ARRAY
,其中第一个模板参数是T_CG_HELPER
。 这可能意味着它是“ T_CG_HELPER的数组”。
您尚未向我们展示ARRAY
类的外观,因此无法知道如何对其进行迭代。 helpers(p)
意思是“在helpers
上调用operator()
函数,将p
作为参数传递”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.