64,266
社区成员
发帖
与我相关
我的任务
分享
Class Child;
Class Parent
{
public:
void (Child::* funcPtr)();
}
Class Child
{
public:
void Func(){
};
void Init(){
Parent p;
p.funcPtr=Func;
p.funcPtr() //错误
}
}
class Worker
{
public:
void Method1(){
ATLTRACE(L"1");
}
void Method2(){
ATLTRACE(L"2");
}
void (Worker::*pMethod)();
void DoSomething(){
(this->*pMethod)();
}
};
class Assembler
{
public:
void Assemble(){
Worker worker1,worker2;
worker1.pMethod=&Worker::Method1;
worker2.pMethod=&Worker::Method2;
worker1.DoSomething();
worker2.DoSomething();
}
};
class Child;
class Parent
{
public:
void (Child::* funcPtr)();
};
class Child
{
public:
void Func()
{
}
void Init()
{
Parent p;
p.funcPtr=&Child::Func;
Child q;
(q.*p.funcPtr)(); //类成员函数的指针一定要通过对象访问
}
};
int main()
{
Child a;
a.Init();
return 0;
}
#include <iostream>
using namespace std;
class Child;
class Parent
{
public:
void (Child::* funcPtr)();
};
class Child
{
public:
void Func()
{
cout << "Hello world!" << endl;
}
void Init()
{
Parent p;
p.funcPtr = &Child::Func;
(this->*(p.funcPtr))();//这里p.funcPtr只是一个函数地址,即函数指针,由于该函数指针是一个Child的成员函数,所以需要和一个Child对象绑定。。。。如果是static的成员函数,可以直接调用而不用实体对象。。。
}
};
int main()
{
Child c;
c.Init();
return 0;
}
#include <iostream>
using namespace std;
class Child;
class Parent
{
public:
void (Child::* funcPtr)();
};
class Child
{
public:
void Func()
{
cout << "Hello world!" << endl;
}
void Init()
{
Parent p;
p.funcPtr = &Child::Func;
__asm call p.funcPtr;
}
};
int main()
{
Child c;
c.Init();
return 0;
}
#include <iostream>
using namespace std;
class Child;
class Parent
{
public:
void (Child::* funcPtr)();
};
class Child
{
public:
void Func()
{
};
void Init()
{
Parent p;
p.funcPtr = &Child::Func;
__asm call p.funcPtr;
}
};
int main()
{
cout << "Hello world!" << endl;
return 0;
}
p.funcPtr=&Child::Func;
//---你这写的神马代码?