#include "stdafx.h"
struct point {float x,y;};
struct window
{
~window() {}
void foo(int) {}
void foo(point) {}
virtual void vfoo() {}
void OnCommand()
{
printf("command\n");
}
};
struct Button : public window
{
~Button() {}
virtual void vfoo(){}
void OnCommand()
{
printf("command\n");
}
};
void main()
{
point pt ;
pt.x = 10;
pt.y = 100;
window Main;
Button Child;
//void* pofp = (void*) (void(obj::*)(point))&obj::foo; // error C2440: “类型转换”: 无法从“void (__cdecl obj::* )(point)”转换为“void *”
void(window::*pi)(int) = &window::foo;
void(window::*pp)(point) = &window::foo;
void(Button::*vp)() = &Button::vfoo;
void(window::*pComamnd)() = &window::OnCommand;
typedef void(window::*CommandPtr)( ) ;
CommandPtr ptr = (CommandPtr) &Button::OnCommand;
((&Child)->*vp)();
((&Child)->*pi)(1);
((&Main)->*pp)(pt);
((&Main)->*ptr)();
}
C++成员函数指针动太绑定
最新推荐文章于 2023-03-06 23:14:28 发布