首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-20 
新手请教虚函数的定义的问题,谢谢哈我想定义一个纯虚类,它的子类都要自己实现add_up函数,add_up函数操作的

新手请教虚函数的定义的问题,谢谢哈
我想定义一个纯虚类,它的子类都要自己实现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函数中要用到子类自己的属性,程序改成……

热点排行