模板结构作为模板类类型

时间:2011-05-15 23:19:14

标签: c++

  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)中的括号代表什么?我们如何迭代助手,因为助手是一个单一的对象

2 个答案:

答案 0 :(得分:2)

Off是精神回答,因为我不知道ARRAY到底是什么......

您的ARRAY类模板似乎会重载函数调用运算符operator()而不是索引运算符operator[]。只需使用它就像那些()括号中的正常数组索引括号[] 此外,您的代码清楚地显示了使用helpers - 循环遍历for的方法...

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

答案 1 :(得分:1)

helpersARRAY,其中第一个模板参数为T_CG_HELPER。这可能意味着它是“T_CG_HELPERs的阵列”。

您没有向我们展示ARRAY类的外观,因此无法知道如何迭代它。 helpers(p)表示“在operator()上调用helpers函数,将p作为参数传递”。