我们如何使用指针实现类的运算符

时间:2014-12-09 07:36:42

标签: c++ design-patterns operators implementation

Vec_MD类是用VecMD_Impl实现的。它不能使用疙瘩指针从实现类中实现运算符

已实施的课程是:

class VecMD{
private:
      VecMD_Impl *pimple;
public: 
     ///other elements..//
     ///operators//
     double& operator [] (int index){  //works
           return pimple -> operator[](index);
     }
     VecMD& operator +=(const VecMD& Vec){  //errors
           return pimple -> operator += (Vec);
     }};

实施班是

class VecMD_Impl{
private:
     double *p_;
     int dim;
public:
     ////other elements....////
     //opearators//
     double& operator[](int index){
          return p_[index];
     }
     VecMD_Impl& operator +=(const VecMD_Impl& Vec){
          for(int i = 0 ; i <= Vec.dim; ++i){
               p_[i] += Vec.p_[i];
          }
          return *this;
     }};

是真的 - &gt;在实现类上使用运算符?

如果我们如何在pimpl习语上使用它们呢?

1 个答案:

答案 0 :(得分:0)

已修复

的问题
VecMD& operator += (const VecMD& Vec)
{
     pimple -> operator +=(*Vec.pimple);
     return *this;
}

实现类是一样的。