如何定义函数接口,使得它能......

wangchinaking 2005-08-15 11:42:21
如何定义函数接口,使得它能够在调用过程中有如下的实现:
// declare function
void func ( ??? ); // <-- 这里如何定义??
...
...

// Implementation
main
{
....;
func ("Press " << "any key " << "to exit...");
....;
}
也就是要使用标准库中输入输出方式!!
请赐教.
...全文
237 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
doway 2005-08-16
  • 打赏
  • 举报
回复
哦,糟糕!讲错话了。

"Press " << "any key " << "to exit..." 根本就是一个错误的表达式。

doway 2005-08-16
  • 打赏
  • 举报
回复
参数首先要被计算,然后才能传递。这话应该不会错吧。

要想这样调用:func ("Press " << "any key " << "to exit...");
那么就只能这样定义:func(char *);

非常惊讶这么人给出这么多不沾边的回答。

wangchinaking 2005-08-16
  • 打赏
  • 举报
回复
换句话说, 我想用标准库中的输入输出方式, 替换原来的printf ()/fprintf ()/sprintf ()...的传统输出方式! 可又不想用户关心文件流叫什么名字, 比如
首先定义, std::ostream myout ("file.dat");
一般做法是, myout << "I love this game!" << endl;
可是这样做, 用户要知道myout这个变量, 我不想让别人知道, 怎么办呢?
就这样做, func1 ("I love this game!" << endl);

wangchinaking 2005-08-16
  • 打赏
  • 举报
回复
呵呵, 我是在设计一个Log接口时突发奇想的, 我知道有一种方法可以实现, 不过是用宏定义来做, 对于这个方法我不太满意, 于是想到直接实现函数接口岂不是更好些?
就像使用cout << "" << "" << endl那样, 很简单易用, 况且能实现字符串以及整形数据的导出.
确实挺难办的!
以前问过一位UT的哥们儿,他提供的就只是宏而已. 那方法太浪费代码, 我不喜欢.

期待中.............................
windindance 2005-08-15
  • 打赏
  • 举报
回复
void func ( iostream in ); // <-- 这里如何定义??

iostream in;
func (in << "Press " << "any key " << "to exit...");

这样行不行?
jixingzhong 2005-08-15
  • 打赏
  • 举报
回复
~~~~~~~~~~

晕 了 。
zhouhuahai 2005-08-15
  • 打赏
  • 举报
回复
偶水平菜,不能完成这道题
xiaocai0001 2005-08-15
  • 打赏
  • 举报
回复
好困难啊~
楼主真有想法~~
healer_kx 2005-08-15
  • 打赏
  • 举报
回复
这种形式的、、、我只能说晕。

你还是完整地看看<< 和>>的操作符重载吧。。。
我个人认为你的要求不能被实现。。。
snowbirdfly 2005-08-15
  • 打赏
  • 举报
回复
还有这样预定义,第一次见过,
感觉楼主想法是好,但是《这些运算符要考虑重载。
vvvvy 2005-08-15
  • 打赏
  • 举报
回复
我曾经定义过这样的东西:
#ifdef _DEBUG
#define cout_infor(exp) cout<<exp
#eles
#define cout_infor
#endif
vvvvy 2005-08-15
  • 打赏
  • 举报
回复
支持 CMyMfc 不过去掉最后的分号
#define func(parm) cout<<parm
qingyuan18 2005-08-15
  • 打赏
  • 举报
回复
楼主你把需求说清楚一点,为啥要用这种方式?
Jagen在路上 2005-08-15
  • 打赏
  • 举报
回复
楼主的想法,我晕死了!
hejiwangbaggio 2005-08-15
  • 打赏
  • 举报
回复
估计他要的是这种:
fun(...)
是不是,也就是说要的是象printf这样的??
如果这样就按上面的方法
Stone2005 2005-08-15
  • 打赏
  • 举报
回复
http://www.somade.com/是个很专业的技术社区,去那里找找吧,或许有你要的答案~
CMyMfc 2005-08-15
  • 打赏
  • 举报
回复
#define func(parm) cout<<parm;
slayer.hover 2005-08-15
  • 打赏
  • 举报
回复
楼主为何要使用这种方式?
qfeng_zhao 2005-08-15
  • 打赏
  • 举报
回复
不行吧
vc调试不通过

64,685

社区成员

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

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