繁体   English   中英

模板结构作为模板类类型

[英]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遍历helpersfor

无论如何,要获得进一步的帮助,我们需要查看一些代码。

helpers是一个ARRAY ,其中第一个模板参数是T_CG_HELPER 这可能意味着它是“ T_CG_HELPER的数组”。

您尚未向我们展示ARRAY类的外观,因此无法知道如何对其进行迭代。 helpers(p)意思是“在helpers上调用operator()函数,将p作为参数传递”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM