免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2051 | 回复: 6
打印 上一主题 下一主题

[函数] 关于函数指针调用带参数的问题(付源码) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-10-22 22:28 |只看该作者 |倒序浏览
我实现了不带参数的函数指针调用,但是带参数后编译不通过,不知道哪位能解答一下?谢谢先, 源码如下:
#include <stdio.h>;
#include <string.h>;

class CallC {
    static void printInfo(const char *string){
        printf("printInfo=[%s]\n",string);
    };
};

void CallFun( void(*pFun)(),const char *string) {
    pFun(string);
    return ;
}

void main(void){

    char *string ="The ChinaUnix.net is very Good!" ;
    CallFun( (&CallC::printInfo)(string));     
   
    return ;
}

到CHINAUNIX.NET不长时间,感觉这个论坛的管理比CSDN上要强

论坛徽章:
0
2 [报告]
发表于 2003-10-22 23:12 |只看该作者

关于函数指针调用带参数的问题(付源码)

好像是因为c++是强类型检查的,c就可以编译通过,还是好好定义吧,如果没有特别要求的话。你的代码有必要整理一下。


  1. typedef  void  ( *FUNCVOID)(const char *);

  2. class CallC {
  3. public:
  4. static void printInfo(const char *string){
  5.                 printf("printInfo=[%s]\n",string);
  6.         };
  7. };

  8. void CallFun( FUNCVOID pFun,const char *string) {
  9.         pFun(string);
  10.         return ;
  11. }

  12. void main(void){
  13. char *string ="The ChinaUnix.net is very Good!" ;
  14. CallFun( (&CallC::printInfo),string);
  15. return ;
  16. }

复制代码

论坛徽章:
0
3 [报告]
发表于 2003-10-23 08:53 |只看该作者

关于函数指针调用带参数的问题(付源码)

void CallFun( void(*pFun)(),const char *string) {
pFun(string);   //编译时Extra parameter in call
}
你编译提示什么?

论坛徽章:
0
4 [报告]
发表于 2003-10-23 10:43 |只看该作者

关于函数指针调用带参数的问题(付源码)

flyingbear :
   你修改后的程序,虽然编译通过了,可是执行后没有任何反映,按理应该在屏幕上打出:The ChinaUnix.net is very Good!
  可实际上什么也没有打出来

ground:
   我原来的程序编译时报的错误不是:Extra parameter in call
    而直接是语法错误
   void CallFun( void(*pFun)(),const char *string) // systax error

谢谢各位的回复

论坛徽章:
0
5 [报告]
发表于 2003-10-23 10:47 |只看该作者

关于函数指针调用带参数的问题(付源码)

忘了说:我的编译环境是SCOUNIX5。06
            C++

论坛徽章:
0
6 [报告]
发表于 2003-10-23 12:00 |只看该作者

关于函数指针调用带参数的问题(付源码)

我那段代码在linux下用gcc编译通过(仅修改main返回为0,否则编译器报错),可以打印出来
printInfo=[The ChinaUnix.net is very Good!]
:建议,如果用c++,最好避免一切可能的关键字,如"string"有可能是 stl 的一个class名字。

论坛徽章:
0
7 [报告]
发表于 2003-10-23 15:14 |只看该作者

关于函数指针调用带参数的问题(付源码)

#include <iostream>;

typedef void (*FUN)(int,int);

class A {
public:   
    static void fun(int a,int b) {}
    void fun2(FUN f){f(1,2);}
};

int main(int argc, char** argv)
{
    A a;
    a.fun2(A::fun);
}

-------------------------------------
using linux 7.1, a much problem os
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP