打印

函数传递问题

[复制链接]
870|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinadz|  楼主 | 2012-4-19 18:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<stdio.h>

typedef
int (*printfun)(char
*str);

class A
{
public:
   
void ap(printfun pf)
    {
        pf(
"aaaaa");
        printf(
"calss A\n");
    }
};

class B
{
public:
   
int print(char
*str)
    {
        printf(
"class B : %s\n",str);
    }

   
void bp()
    {
        A a;
        a.ap(print);
    }
};

void main()
{
    B b;
    b.bp();
}


vc6下编译错误:
C:\Documents and Settings\Administrator\test.cpp(27) : error C2664: 'ap' : cannot convert parameter 1 from 'int (char *)' to 'int (__cdecl *)(char *)'
  None of the functions with this name in scope match the target type

相关帖子

沙发
yybj| | 2012-4-19 18:34 | 只看该作者
typedef int (*B::printfun)(char *str);

成员函数指针和普通的函数指针是不同的。
要区分开来

使用特权

评论回复
板凳
xsgy123| | 2012-4-19 20:27 | 只看该作者
print函数是B的成员函数 在A中用this->printfunc调用不了的 你这个已经没意义了 除非得到B对象的地址

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝