_________________________________________我错了______________________________________

TemplatesGuy 2005-04-12 01:36:39
template<typename T1,typename T2,typename PT)
inline PT & max( T1 const & a, T2 const &b);


=============================
为什么是错的,请详细解释一下。我知道哪里错了。但是认识还很模糊。。。
...全文
185 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
TemplatesGuy 2005-04-13
  • 打赏
  • 举报
回复
up
inlin 2005-04-13
  • 打赏
  • 举报
回复
TemplatesGuy 2005-04-12
  • 打赏
  • 举报
回复
书上说不能使用引用返回的啊?

不知道,不是我弄错了?谢谢

--------
vc还不支持把模板的定义和实现放在两个文件中

inline应该可以的。
jronald 2005-04-12
  • 打赏
  • 举报
回复
同意 rexking0(风之彩)
不知道楼主用的是不是vc,vc还不支持把模板的定义和实现放在两个文件中
skyofdreams 2005-04-12
  • 打赏
  • 举报
回复
光这个声明看不出错误,请将完整的代码贴出……

算了,我还是说一下吧。
照 考拉 的用应该不会出错。

如果想不显式给出模板参数,或只给一个PT是不行的。
不显给出 则 无法自动识别出PT的类型,因为模板参数的类型无法通过返回值来判断。
若只给一个,信息是充足了,但没有这种用法。所以你应该只能显式的给出所有的类型,一旦给出显示类型,函数就相当于一个普通函数,执行普通的相当转换。 注意这与模板的自动匹配时是不同的。

若你问模板参数为啥不能通过返回值来判断,我想这是因为模板类型的判断依赖于C++函数的强压表示,而函数的内部表示是没有返回值信息的,即重载函数的识别是不理会返回类型的。
你要还问为什么不理会返回类型,嗯嗯
BS说:我不想让函数调用与调用的环境有关。




rexking0 2005-04-12
  • 打赏
  • 举报
回复
用template 应该 定义于实现要在一块。
zhangfjj 2005-04-12
  • 打赏
  • 举报
回复
inline PT & max( T1 const & a, T2 const &b);
只是声明?
罗卜基斯 2005-04-12
  • 打赏
  • 举报
回复
#include<iostream.h>
template<typename T1,typename T2,typename PT>
inline PT &max(T1 const &a,T2 const &b)
{
return (a > b ? a:b);
}
void main()
{
double a = 3.15,b = 6.35;
cout<< max<double,double,double>(a,b);
}
这个程序可以在VC6.0通过。
TemplatesGuy 2005-04-12
  • 打赏
  • 举报
回复
没有什么分了。。请支持,,

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧