社区
C++ 语言
帖子详情
STL,模板与链接
Qlaiaqu
2010-01-08 11:44:25
STl是以文件形式提供的,而不是以DLL或者Lib文件提供的。
我们在使用Stl的时候并没有直接的将STl的文件添加到工程中,而只是IDE本身包含了其目录而已。
假设我创建了一个模板类,模板中使用的是自己创建的类,怎么安排能像使用stl一样方便了?
还请大家集思广益,非常感谢。
...全文
149
17
打赏
收藏
STL,模板与链接
STl是以文件形式提供的,而不是以DLL或者Lib文件提供的。 我们在使用Stl的时候并没有直接的将STl的文件添加到工程中,而只是IDE本身包含了其目录而已。 假设我创建了一个模板类,模板中使用的是自己创建的类,怎么安排能像使用stl一样方便了? 还请大家集思广益,非常感谢。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
模版中使用楼主自己创建的非模板类?
C++之父Bjarne谈C++中的
STL
模板
C++之父Bjarne Stroustrup在谈论
STL
模板
时,强调了它对C++标准制定的影响以及在实现过程中的挑战。
STL
的核心理念是提供一组高效、可重用的容器(如vector、list、set等)和算法,这些容器能够存储不同类型的数据,...
stl
标准
模板
库学习笔记.docx
STL
(Standard Template Library,标准
模板
库)是C++编程中的一个重要组成部分,它提供了一组高效、可重用的数据结构和算法。
STL
的核心概念包括容器(如vector、list、set等)、迭代器、算法和函数对象。在深入
STL
...
STL
源码剖析(含SGI-
STL
源代码)(
STL
专辑)
5.
STL
与泛型编程:
STL
是泛型编程的重要实践,侯捷先生可能会介绍泛型编程的基本概念,如
模板
、类型推断和依赖性类型等,以及它们在
STL
中的应用。 6.
STL
与C++标准库的关系:
STL
是C++标准库的一部分,书中可能会...
vc6.0
stl
pack
2. 头文件和库
链接
:正确包含
STL
的头文件,并在编译设置中
链接
对应的库文件。 3. 泛型编程:理解并熟练使用
模板
是使用
STL
的关键,因为
STL
大部分组件都是基于
模板
的。 4. 性能优化:根据实际需求选择合适的容器和算法...
stl
源码+文档(想要研究
stl
的朋友可以看看)
STL
的源码通常包括了
模板
类和非
模板
函数,
模板
技术使得
STL
能够处理不同类型的数据。通过阅读源码,你可以看到如何使用
模板
元编程来创建更加灵活和强大的工具。同时,文档会解释每个组件的设计原则和使用场景,帮助你...
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章