c++ 函数参数不确定,怎么办?只能用函数重载吗?

fihuang 2008-04-16 03:25:03
两个类classA和classB,一个函数f的参数可能是:
f(classA a,classA a)
f(classA a,classB b)
f(classB b,classA a)
f(classB b,classB b)
这四种情况。
只能通过重载实现吗?有没有更好的方法?
先谢谢各位!
...全文
321 31 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
王旺旺旺 2008-04-19
  • 打赏
  • 举报
回复
用模板写,其实就是重载,只不过template是编译器替你重载.
IT_lau 2008-04-18
  • 打赏
  • 举报
回复
很强大啊
coolzdp 2008-04-18
  • 打赏
  • 举报
回复
模板
bluehuzh 2008-04-18
  • 打赏
  • 举报
回复
窃窃的问下,所谓的模板是个什么东东!!!
WuBill 2008-04-18
  • 打赏
  • 举报
回复
mark
ptwcj 2008-04-17
  • 打赏
  • 举报
回复
支持模版
compleat 2008-04-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 foxyz 的回复:]
template <class T,class U> f(T& t,U&u);
[/Quote]
pigDeity 2008-04-17
  • 打赏
  • 举报
回复
典型模板问题
babyofbaby 2008-04-17
  • 打赏
  • 举报
回复
模板
或者用RTTI
lkldiy 2008-04-17
  • 打赏
  • 举报
回复
模板
r_swordsman 2008-04-17
  • 打赏
  • 举报
回复
f(classA a,classB b)
f(classB b,classA a)

这两个就是参数的顺序不一样,有必要分开写?
K_s_G 2008-04-16
  • 打赏
  • 举报
回复
16楼的看不懂
herman~~ 2008-04-16
  • 打赏
  • 举报
回复
模板编程
acrobatyuer 2008-04-16
  • 打赏
  • 举报
回复
重载和模板应该都可以的吧!
myullian 2008-04-16
  • 打赏
  • 举报
回复
模版
HelloDan 2008-04-16
  • 打赏
  • 举报
回复
模板当然可以,不过用回调函数也是可以的。

#include<stdio.h>


typedef struct ode
{
int value;
struct Node *link;
}Node;



/*Call back function, it's useful for different kind of node, we just want to change compare function*/

Node* getnode(Node *ele,void const *val, int (*compare)(void const*, void const *))
{
while(ele!=NULL)
{
if(compare(&(ele->value),val))
break;
ele=ele->link;
}
return ele;
}


int com_int(void const *a,void const *b)
{
if(*(int *)a==*(int *)b)
return 0;
else
return 1;
}




int main()
{
Node root;
Node one;
int target=90;
one.value=90;
one.link=NULL;
root.value=35;
root.link=&one;
Node* tmp=getnode(&root,&target,com_int);
if(tmp!=NULL)
{
printf("%d",tmp->value);
}
return 0;
}
//C和指针里面的一个例子,昨晚刚贴完。再贴一下吧。

sky54laozhu 2008-04-16
  • 打赏
  • 举报
回复
模板简单。。。又好。。。
fihuang 2008-04-16
  • 打赏
  • 举报
回复
classA和classB如果刚好是继承了同一个基类的话,用哪种方法比较好呢?
是模板好还是1楼的那种方法好?
f22fbi 2008-04-16
  • 打赏
  • 举报
回复
感觉可以用模板吧
kingsun555 2008-04-16
  • 打赏
  • 举报
回复
不赞成1楼的。

class A 和 class B 有可能是完全不同的类,没有一点共同点。
如果搞个公共基类,违反了面向对象的设计原则吧。
加载更多回复(11)

65,186

社区成员

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

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