class CInsLibrary
{
public:
CInsLibrary(){;}
virtual ~CInsLibrary(){;}
public:
void Func(int i){;}
};
typedef void (CInsLibrary::*PFUNC)(int );
//main.cpp
PFUNC pp = CInsLibrary::Func; //1)
CInsLibrary* pLib = new CInsLibrary;
PFUNC ppp = (pLib->Func); //2)
ASSERT(pp == ppp); //caution!!
上面的代码在VC6中编译的很好,但是在VS2005中,
1)必须改为
PFUNC pp = &CInsLibrary::Func; 否则就是Compiler Error C3867
2)中的这种写法,VS2005已经不支持了。因为的确,指向成员函数的指针,更合理的写法是class::foo而不是object.foo
博客给出一段包含类成员函数指针的代码,指出该代码在VC6中编译正常,但在VS2005中存在问题。如代码中1)处需改为PFUNC pp = &CInsLibrary::Func,否则会出现Compiler Error C3867;2)处写法VS2005已不支持,成员函数指针更合理写法是class::foo。
8539

被折叠的 条评论
为什么被折叠?



