社区
C++ 语言
帖子详情
一个关于模板的奇怪问题.
wtzyb4446
2004-11-20 08:28:09
我用VC6.0自己写一个模板类list,如果我把该类的成员函数定义都写到list.cpp文件中,则报
unresolved external symbol...
的错误,意思是说找不到函数的定义。如果把成员函数写到list.h中(在类定义体外),或者写到工程主cpp文件中(也就是main函数上面了),则编译和运行都正常。
不知有没有大虾遇到过这种问题?
...全文
104
9
打赏
收藏
一个关于模板的奇怪问题.
我用VC6.0自己写一个模板类list,如果我把该类的成员函数定义都写到list.cpp文件中,则报 unresolved external symbol... 的错误,意思是说找不到函数的定义。如果把成员函数写到list.h中(在类定义体外),或者写到工程主cpp文件中(也就是main函数上面了),则编译和运行都正常。 不知有没有大虾遇到过这种问题?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
carylin
2004-11-20
打赏
举报
回复
摸版的实现与定义一般是放在同个文件中的.
WuYL7812
2004-11-20
打赏
举报
回复
实例化结果当然不一样
template <class T>
class YourTemplate
{
public:
void fun(const T &data)
{
T temp = data;
}
};
这个赋值运算符就有区别,如果T是int,调用全局的赋值,如果T是你写的类,要调用你写的
operator = ()。还有怎么判断这个operator = 是否存在呢,都要等到实例化时才判断对和错
wtzyb4446
2004-11-20
打赏
举报
回复
to WuYL7812(龙哥) :
这个我知道,模板函数是要调用的时候才实例化的。
但是,模板函数的声明定义是不是写在一起,实例化的过程应该是一样的阿,为什么会造成编译的结果不同?
WuYL7812
2004-11-20
打赏
举报
回复
故意写错,我说的是语法错误。
WuYL7812
2004-11-20
打赏
举报
回复
VC.net,和dev c++都不支持这个export
你打开这些编译器写的模板,定义和实现都是放在一起的,放在没有.h的头文件里 <list>
模板必须等到你用它的时候才实例化的,没有确定模板参数,没法编译的,你可以试一下,故意写错类模板的函数体,编译时如果不掉用不报错的,只有你调用这个函数时,在你这个调用点所在函数下面加这个函数的实例化,才知道错了。实例化时必须发现你这个函数体,那些非模板可以分离,是因为事先已经编译成目标文件了。
xiaolizi
2004-11-20
打赏
举报
回复
绕了个弯子,本质上都是一样的^_^
wtzyb4446
2004-11-20
打赏
举报
回复
多谢楼上两位。
其实我还发现一种方法,可以让声明和实现分开:
#include "list.cpp"
不过看起来很不爽。
晨星
2004-11-20
打赏
举报
回复
对的,你说的一点也没错,VC6就是这样的。
对于模块的支持,VC6做的不够的地方还有很多。对于模板,其他的编译器往往也都有不符合标准的地方。
WuYL7812
2004-11-20
打赏
举报
回复
模板类的定义和实现可以分离的,就是用export,但是很少编译器支持这个export,所以如果是模版,类的定义和实现必须放在同一个文件里的.
七套最新div+css中文html
模板
免费下载
七套最新div+css中文html
模板
免费下载。现在网上到处都是div+css
模板
,但是真正能用的到底有几个?你自己说! 无非是一些英文版的,但是国外的
模板
理念和国内的很不一样,英文的讲究框架合理,韩国的讲究视觉美,国内的刚好是二者的综合体。 现在
模板
界有这样一种
奇怪
的现象,html格式的都是英文的,没法儿用那,实在惨不忍睹。韩国的都是PSD的,会切割的有几个?中文版的寥寥无几................ 各大网站都是这样的,其实都是你抄我,我采你。有意思吗?数量挺多,能用到几个? 下面发布的都是我自己找的一些国内中文的网站,个人觉得很美观,自己动手一点儿一点儿抠的。
浅谈C++ templates 函数
模板
、类
模板
以及非类型
模板
参数
最近打算挑选几个STL容器做个简单实现,发现里面牵涉到不少
模板
知识。这里算提前学习一下C++
模板
的相关知识吧。这次主要学习了什么是函数
模板
(这个最简单),类
模板
以及非类型
模板
参数。下面挨个举例说明。 文章目录1. 函数
模板
2. 类
模板
3. 非类型
模板
参数 1. 函数
模板
函数
模板
是最简答的
一个
,下面就定义
一个
返回两个值中最大者的函数
模板
: namespace og { template&amp;lt;...
跟宁哥学Go语言视频课程(11):
模板
本课程的主要内容:1. 什么是
模板
2.
模板
的简单应用3. 文件
模板
4.
模板
动作5. 调用函数6.
模板
循环7. 其他
模板
技术
C++之
模板
<template>
目录🌈前言🌸
模板
🌷1、泛型编程🌺2、函数
模板
🍀2.1、函数
模板
的概念🍁2.2、函数
模板
的格式🍂 2.3、函数
模板
的原理🍌2.4、函数
模板
的实例化🍃 2.5、
模板
参数的匹配原则🍒 3、类
模板
🍕 3.1、类
模板
的概念🍔 3.2、类
模板
的格式🍒3.3、类
模板
的实例化🍖 4、非类型
模板
参数🍗 5、
模板
的特化🍙5.1、特化的概念🍛5.2、函数
模板
的特化🍜5.3、类
模板
特化🍝 5.3.1、类
模板
全特化🍞 5.3.2、类
模板
的偏特化🍟6、
模板
的分离编译🎆6.1、 什么是分离编译🎆6. 2、解决方法🎇7、
模板
总结 🌈前
C++(第六篇):
模板
详解(函数
模板
、类
模板
、非类型
模板
参数、
模板
特化、
模板
分离编译
问题
及一些题目)
模板
是C++支持参数化多态的工具,使用
模板
可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。使用
模板
的目的就是能够让程序员编写与类型无关的代码。比如编写了
一个
交换两个整型int 类型的swap函数,这个函数就只能实现int 型,对double,字符这些类型无法实现,要实现这些类型的交换就要重新编写另
一个
swap函数。使用
模板
的目的就是要让这程序的实现与类型无关,比如
一个
swap
模板
函数,即可以实现int 型,又可以实现double型的交换。...
C++ 语言
64,670
社区成员
250,489
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章