社区
C++ 语言
帖子详情
STL,模板与链接
Qlaiaqu
2010-01-08 11:44:25
STl是以文件形式提供的,而不是以DLL或者Lib文件提供的。
我们在使用Stl的时候并没有直接的将STl的文件添加到工程中,而只是IDE本身包含了其目录而已。
假设我创建了一个模板类,模板中使用的是自己创建的类,怎么安排能像使用stl一样方便了?
还请大家集思广益,非常感谢。
...全文
143
17
打赏
收藏
STL,模板与链接
STl是以文件形式提供的,而不是以DLL或者Lib文件提供的。 我们在使用Stl的时候并没有直接的将STl的文件添加到工程中,而只是IDE本身包含了其目录而已。 假设我创建了一个模板类,模板中使用的是自己创建的类,怎么安排能像使用stl一样方便了? 还请大家集思广益,非常感谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
windsting
2010-01-09
打赏
举报
回复
你的意思就是说,你的类是一个 .h 加一个 .cpp 的文件?
如果你的类本身不很大的话,可以考虑把所有成员函数写成inline的,
这样就只剩下一个头文件了,不知道可是你的意思?
珍惜生命远离CPP
2010-01-09
打赏
举报
回复
模板本身就以源码的形式提供.
到include目录看看
stl的实现都在那里放着呢/
Qlaiaqu
2010-01-09
打赏
举报
回复
非常感谢以上为的回帖,你们给了我很多启发,再次感谢,结贴给分。
mstlq
2010-01-09
打赏
举报
回复
既然已经用到自己的非模板类了……
楼主还是用lib和dll吧……
否则,请更改自己的设计咯……
把S和T也做成模板类,这样就可以只用h文件了……
gcc_gun
2010-01-09
打赏
举报
回复
把自己的头文件和源文件都拷贝到系统路径下,就像linux那样,呵呵,这样你以后就都能够用了不是~~~
不知道楼主是不是这样意思。
DLevel
2010-01-09
打赏
举报
回复
模板不支持分离编译,所以声明和实现制能放一起,
A,B不想DLL,也要保证跟你模板一样以源代码形式交给客户程序员。
那A,B只能都定义成模板了吧。
老邓
2010-01-09
打赏
举报
回复
Boost楼主应该很熟悉,WTL是一个GUI开源工程,寄托在sourceforge.net上。
老邓
2010-01-09
打赏
举报
回复
[Quote=引用 8 楼 fengxuxing 的回复:]
非常抱歉没有说清楚,是这样的,我创建了一个模板类
template <class S, class T>
class DATABASE_API Store
{
public:
Store(){m_data = new S();}
~Store(){delete m_data;}
int Add(vector <T> &vec){return m_data->Add(vec);}
int Delete(vector <T> &vec){return m_data->Delete(vec);}
int Update(vector <T> &vec){return m_data->Update(vec);}
int Query(const char *sql, vector <T> &vec){return m_data->Query(sql, vec);}
private:
S *m_data;
};
其中的S,T是自己创建的类型,S用于操作结构体T
我在外部多个模块想使用类Store
比如Store <A,B> store;
我不想将其编译成DLL,或者根本不建议编成DLL,所以我想各个模块采用共享的方式直接调用这个模板,其中的A,B都以源码形式提供,有没有什么方式可以实现?
非常感谢以上各位的回帖!!
[/Quote]
楼主可以参考下WTL的源码,纯头文件实现的界面库。
也可以参考下Boost的源码,大部分库都是纯头文件实现。
ssdx
2010-01-09
打赏
举报
回复
还有什么是“我们在使用Stl的时候并没有直接的将STl的文件添加到工程中,而只是IDE本身包含了其目录而已。 ”
你编译连接的时候 是编译器连接器在做事 跟IDE有什么关系。你所谓的IDE包含,也是编译器连接器用到了。
cattycat
2010-01-09
打赏
举报
回复
直接include你的头文件,或者把这个头文件和实现包含到你的项目工程中。
stl的类声明和实现都是在h文件中的,所以只包含头文件就行了,你也可以这样,写到头文件中,以后每次用的时候把这个包含进来就行。
ssdx
2010-01-09
打赏
举报
回复
模版是编译期用的,你运行时要动态调用?
是不是想搞个反射之类的东西
Qlaiaqu
2010-01-09
打赏
举报
回复
非常抱歉没有说清楚,是这样的,我创建了一个模板类
template<class S, class T>
class DATABASE_API Store
{
public:
Store(){m_data = new S();}
~Store(){delete m_data;}
int Add(vector<T> &vec){return m_data->Add(vec);}
int Delete(vector<T> &vec){return m_data->Delete(vec);}
int Update(vector<T> &vec){return m_data->Update(vec);}
int Query(const char *sql, vector<T> &vec){return m_data->Query(sql, vec);}
private:
S *m_data;
};
其中的S,T是自己创建的类型,S用于操作结构体T
我在外部多个模块想使用类Store
比如Store<A,B> store;
我不想将其编译成DLL,或者根本不建议编成DLL,所以我想各个模块采用共享的方式直接调用这个模板,其中的A,B都以源码形式提供,有没有什么方式可以实现?
非常感谢以上各位的回帖!!
wwq100
2010-01-09
打赏
举报
回复
学习了
wanghao111
2010-01-09
打赏
举报
回复
把你写的放到IDE的目录下
kingstarer
2010-01-09
打赏
举报
回复
你的类必须写在一个文件里面
如若不然就要使用很难看的形式
class.h
=========
class DEMO
{
...
};
#include "class.cpp"
aaaa3105563
2010-01-08
打赏
举报
回复
up
mstlq
2010-01-08
打赏
举报
回复
模版中使用楼主自己创建的非模板类?
2020千锋
STL
标准
模板
库深入浅出教程(课件和源码)
2020千锋_物联网_
STL
标准
模板
库深入浅出教程(通俗易懂)的源码和课件,方便各位参考b站视频进行学习!
数据结构C语言描述应用标准
模板
库(
STL
)(第2版)
资源名称:数据结构C 语言描述 应用标准
模板
库(
STL
)(第2版)资源截图: 资源太大,传百度网盘了,
链接
在附件中,有需要的同学自取。
STL
标准
模板
库--编程初步视频精讲
STL
(Standard Template Library),即标准
模板
库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库中,是ANSI/ISO C++标准中新的也是极具革命性的一部分。
STL
将数据结构和算法的分离,使得
STL
变...
标准
模板
库
STL
NULL 博文
链接
:https://c-shadow.iteye.com/blog/1450052
java JGL标准程序库,类似C++的
STL
JGL实现了许多功能,可满足对一个集合库的大多数常规需求,它与C++的
模板
机制非常相似。JGL包括相互
链接
起来的列表、设置、队列、映射、堆栈、序列以及反复器,它们的功能比Enumeration(枚举)强多了。同时提供了...
C++ 语言
64,649
社区成员
250,477
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章