class IValue2D : public IDispatch
{
    
};class CValue2D :public IValue2D
{
};我想在CValue2D中重载operator+来实现两个CValue2D的相加,然而不知道具体该怎样写?我想如果返回一个对象,就破坏了COM的封装性,但如果在接口里写,又不知所措,望指教!!!!!!!!!!!!!

解决方案 »

  1.   

    可以定义一个全局的运算符吧。CValue2D& operator+(CValue2D& v2D, const CValue2D cv2D)
    {
       v2D.plus(cv2D);
       return v2D;
    }运算符只是起了一个方便使用的作用。
      

  2.   

    我觉得不行,因为重载+后,需要返回1个新的接口实例,addref就需要+1
    所以当你写成a=a+b的时候,在结束程序时,将不知道有多少实例被创建,从而不能释放所有接口。脑袋大了帮你顶把要是我,就在接口上加一个add函数算了。
    =fly by=
      

  3.   

    楼上的所言即是啊!!!!!!!!!!!!如果按照RedFire(丹焰)所说,那么用户不就可以直接访问到CValue2D了?那还要IValue2D做什么呢?可是如果在接口里实现……返回值必须是HRESULT呀!!怎么办????
      

  4.   

    楼上的所言即是啊!!!!!!!!!!!!如果按照RedFire(丹焰)所说,那么用户不就可以直接访问到CValue2D了?那还要IValue2D做什么呢?可是如果在接口里实现……返回值必须是HRESULT呀!!怎么办????
      

  5.   

    你在接口里面定义个Add()方法可以不