关于使用类中的模板函数遇到的一些问题

    在类A中定义了一个模板函数template<typename T> bool Fun(T msg), 定义类B继承于类A,但是类B想要在Fun()函数中做有别于类A中Fun()的操作,因为Fun()在类A中被定义为模板函数,所以Fun()不能为虚拟函数,类B中若想要重新定义Fun()的行为,那么只能覆写和重载了,我打算覆写,因为类B中Fun()和类A中的Fun()返回值和参数列表是一样的,定义好了之后,在类B中调用Fun()函数,如果不加任何修饰,那么调用的Fun()就是类B自己定义的,类B如果要调用类A中的Fun()函数,那么就应该要这么调用:A::Fun(),不然是调用不到的,事实确实是这样的。接下来,编译却报错连接错误,错误提示说:Fun()是不可解析的标志,刚开始我一直以为是文件包含的问题,后来以为是继承关系的写法问题,后来才发现是A中模板函数Fun()的定义问题,是这样的,类A的声明放在了头文件中,类A的定义放在了源文件中,我想到之前,类模板的申明和定义应该要在同一个文件中,如果不在同一个文件中,模板类将识别不了模板类的定义,但是我没想到一个普通类定义的模板函数也是这样,于是将类A中的Fun()函数的定义放到头文件中,编译,不报错了!

环境:win8.1 + vs2013

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值