#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++成员函数指针动太绑定
最新推荐文章于 2025-05-18 21:35:32 发布
本文通过一个C++程序实例介绍了如何使用成员函数指针,并展示了如何针对不同类型的成员函数(包括虚函数和非虚函数)进行操作。此外,还演示了如何通过基类指针调用派生类的成员函数。

359

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



