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)
这四种情况。
只能通过重载实现吗?有没有更好的方法?
先谢谢各位!
...全文
286 31 打赏 收藏 举报
写回复
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)
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-04-16 03:25
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下