新手请问虚函数的定义的有关问题,多谢哈

新手请教虚函数的定义的问题,谢谢哈
我想定义一个纯虚类,它的子类都要自己实现add_up函数,add_up函数操作的参数类型是子类型本身,如下:

C/C++ code

class DAT_BASE
{
public:
  long sum_num;

  virtual int add_up(DAT_BASE & v_a, DAT_BASE & v_b) = 0;

  virtual ~DAT_BASE(){};

};

class DAT_ITEM: public DAT_BASE
{
public:

  vector < double > dat;
  int add_up(DAT_ITEM & v_a, DAT_ITEM & v_b) {.....};

};

class DAT_RCD: public DAT_BASE
{
public:

  double dat;
  int add_up(DAT_RCD & v_a, DAT_RCD & v_b) {.....};
};



但这样编译不过。我尝试把参数类型改成普通的int型,则可以通过。

C/C++ code

class DAT_BASE
{
public:
  long sum_num;
  virtual int add_up(int & v_a, int & v_b) = 0;

  virtual ~DAT_BASE(){};

};

class DAT_ITEM: public DAT_BASE
{
public:

  vector < double > dat;
  int add_up(int & v_a, int & v_b) {.....};

};

class DAT_RCD: public DAT_BASE
{
public:

  double dat;
  int add_up(int & v_a, int & v_b) {.....};
};



这种情况我应该怎么处理啊?谢谢哈

------解决方案--------------------
int add_up(DAT_BASE & v_a, DAT_BASE & v_b) = 0;
int add_up(DAT_ITEM & v_a, DAT_ITEM & v_b);
int add_up(DAT_RCD & v_a, DAT_RCD & v_b);
看出来了视力不好,add_up没有在子类中实现
------解决方案--------------------
探讨
引用:
多态实现失败导致纯虚函数未被覆盖而报错//参数不匹配


俺知道定义的时候,参数类型不一样,现在俺的主要问题是应该怎么处理这个问题。
一定要用template么?

------解决方案--------------------
派生类的那两个函数的参数类型改成DAT_BASE & v_a就可以了

------解决方案--------------------
探讨

引用:

引用:
两个子类中的add_up 全部改成
virtual int add_up(DAT_BASE &amp;amp; v_a, DAT_BASE &amp;amp; v_b);
放心大胆的用好了,会是你想要的结果的


试了,好像不行哦,因为在子类的add_up函数中要用到子类自己的属性,程序改成……