类中函数指针作函数参数的有关问题
类中函数指针作函数参数的问题
//代码
class X{
typedef void(X::*func)(int);
private:
int data;
public:
//构造函数
X(){data = 100; };
//用函数指针作参数的函数
void test(func pt_func , int num )
{(this-> *pt_func)( num ); };
//函数指针所指的函数
void out_put( int num)
{ cout < < "out_put X.data " < <num < <endl; };
//调用有函数指针参数的函数
void call()
{test( out_put, data ); };
};
//主函数
int main(int argc, char *argv[])
{
X x;
x.call();
system( "PAUSE ");
return 0;
}
//编译错误:
no matching function for call to `X::test( <unknown type> , int&) '
//为什么是unknown type?谢谢
------解决方案--------------------
test( &out_put, data );
test( &X::out_put, data );
------解决方案--------------------
class X
{
public:
....................
void call()
{test( &X::out_put, data ); }
};
//代码
class X{
typedef void(X::*func)(int);
private:
int data;
public:
//构造函数
X(){data = 100; };
//用函数指针作参数的函数
void test(func pt_func , int num )
{(this-> *pt_func)( num ); };
//函数指针所指的函数
void out_put( int num)
{ cout < < "out_put X.data " < <num < <endl; };
//调用有函数指针参数的函数
void call()
{test( out_put, data ); };
};
//主函数
int main(int argc, char *argv[])
{
X x;
x.call();
system( "PAUSE ");
return 0;
}
//编译错误:
no matching function for call to `X::test( <unknown type> , int&) '
//为什么是unknown type?谢谢
------解决方案--------------------
test( &out_put, data );
test( &X::out_put, data );
------解决方案--------------------
class X
{
public:
....................
void call()
{test( &X::out_put, data ); }
};