vc2005 类成员函数如何赋值?
来源:百度知道 编辑:UC知道 时间:2024/06/16 19:12:49
//aaa.h
class aaa
{
public:
aaa();
virtual ~aaa();
int (aaa::*pfunc)( int);
int fff(int);
};
//aaa.cpp
aaa::aaa()
{
pfunc=fff;
(this->*pfunc)(0);
}
aaa::~aaa()
{
}
int aaa::fff(int)
{
puts( "hello" );
return 0;
}
vc6.0编译完全正确,但是vc2005就报错 pfunc=fff; 这行编译不过!!
请高手指教!!
标题错了:是 vc2005 类成员函数指针 如何赋值?
class aaa
{
public:
aaa();
virtual ~aaa();
int (aaa::*pfunc)( int);
int fff(int);
};
//aaa.cpp
aaa::aaa()
{
pfunc=fff;
(this->*pfunc)(0);
}
aaa::~aaa()
{
}
int aaa::fff(int)
{
puts( "hello" );
return 0;
}
vc6.0编译完全正确,但是vc2005就报错 pfunc=fff; 这行编译不过!!
请高手指教!!
标题错了:是 vc2005 类成员函数指针 如何赋值?
如下赋值即可:
aaa::aaa()
{
pfunc=&aaa::fff; // 函数指针的赋值
(this->*pfunc)(0);
}
没说完,重新回答:
pfunc是函数指针,初始化赋值方式方式是:
pfunc=NULL;
赋值方式:pfunc=fff; (fff为你的函数名,前面不需要加&号)
但是要注意:
类中的普通函数,不允许使用此方式赋值,正确的函数定义方式为:
class aaa
{
public:
aaa();
virtual ~aaa();
int (aaa::*pfunc)( int);
static int fff(int);
};