- 主题:模板类的子类,头源分离好做吗?
父类就一个文件,声明实现都在里面
自类overide了一个虚函数,如果在头里实现啥问题都没有, 如果头里只声明,放到源文件里实现,就有连接问题。
一般应该怎么搞?
--
FROM 86.164.81.*
在header file的最后
#include <implementation.hxx>
【 在 SHENOK 的大作中提到: 】
: 父类就一个文件,声明实现都在里面
:
: 自类overide了一个虚函数,如果在头里实现啥问题都没有, 如果头里只声明,放到源文件里实现,就有连接问题。
: ...................
--
FROM 185.187.243.*
那还不如直接写头文件里
【 在 mvtec 的大作中提到: 】
: 在header file的最后
: #include <implementation.hxx>
:
--
FROM 123.112.22.*
链接的时候,实现的源文件加上了吗?
【 在 SHENOK 的大作中提到: 】
: 父类就一个文件,声明实现都在里面
:
: 自类overide了一个虚函数,如果在头里实现啥问题都没有, 如果头里只声明,放到源文件里实现,就有连接问题。
: ...................
--
FROM 123.112.22.*
搜到过一个方案让在 child.hpp中, 写上 #include "child.cpp"
是一个意思吗?
【 在 mvtec 的大作中提到: 】
: 在header file的最后
: #include <implementation.hxx>
:
--
FROM 86.164.81.*
写了。
【 在 Bernstein 的大作中提到: 】
: 链接的时候,实现的源文件加上了吗?
:
--
FROM 86.164.81.*
你源文件里的实现,是模板函数呢,还是特化后的函数?
完全特化后的函数才会加入链接,模板函数和部分特化函数是不会加入到链接的
【 在 SHENOK 的大作中提到: 】
: 写了。
:
--
FROM 123.112.22.*
我实现的是模板父类中没用到模板参数的方法的一个override。
【 在 Bernstein 的大作中提到: 】
: 你源文件里的实现,是模板函数呢,还是特化后的函数?
: 完全特化后的函数才会加入链接,模板函数和部分特化函数是不会加入到链接的
:
--
FROM 86.164.81.*
差不多
你去看看asio的源代码
基本都是在最后
include一个implementation
但是一般不是 cpp而是hxx或者
hhh之类的
【 在 SHENOK 的大作中提到: 】
: 搜到过一个方案让在 child.hpp中, 写上 #include "child.cpp"
: 是一个意思吗?
:
--
FROM 185.195.59.*
怎么可能有这种东西?
模板类里所有的函数都是有模板类型参数的,不因函数参数是否涉及模板参数而定。
原因就是你没特化,没特化的模板函数就相当于宏,如果在头文件里提供,那么就内联了,如果在cpp文件提供,cpp文件里的宏肯定不会参与链接
【 在 SHENOK 的大作中提到: 】
: 我实现的是模板父类中没用到模板参数的方法的一个override。
:
:
--
FROM 123.112.22.*