100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 模板类成员函数特例化写法

模板类成员函数特例化写法

时间:2021-05-28 14:22:08

相关推荐

模板类成员函数特例化写法

现象: vs编译出现错误,即对函数ReleaseByOwner()进行了重定义;

解决: 先说一下我的开发背景:

原因: 在文件calibdt_array.h中定义了类Array,并声明了类内函数ReleaseByOwner(T **data())如下:

仅仅是声明,并未进行实现,同时在文件ring_circle_board_detector.h中进行了类的特例化实现,即对Array中ReleaseByOwner()函数进行了具体的实现,如下:

同时又在schneider_detect.h中进行了另一种实现:

这两种实现都属于类外的实现,即对Array类内的函数进行的特例化实现,理论上没有问题,但是,

因为在文件calibdt_array.h中,函数只有声明,没有定义,因此默认在类外进行定义,这时类外的定义就会和类外的特例化函数发生冲突,

即都是对函数ReleaseByOwner() 的重定义,因此会报错;

修改:

将类内函数的声明改为定义,即修改如下:

这样就相当与在类内进行实现,同时在类外进行特例化,就不会出现编译错误;

具体解答如下:

因此,这个问题,如果不加 {}, 将函数声明为inline也是可以解决;

参考网页:

模板类成员函数特例化写法:/zkzk12345/article/details/6602351

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。