关于函数指针

码侬 2010-10-13 10:00:06
如何定义一个通用的thiscall调用的函数指针?不局限于任何类。

另有一帖http://http://topic.csdn.net/u/20101012/23/a0a899d4-0ca8-4834-b773-93e8af6f28f4.html
...全文
105 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wltg2001 2010-10-14
  • 打赏
  • 举报
回复
那个帖子打不开,通用型的函数指针应该比较难设计。毕竟每一个函数的参数的个数都不一定相同。
Sou2012 2010-10-14
  • 打赏
  • 举报
回复
。。好奇怪的想法。。
码侬 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wltg2001 的回复:]
那个帖子打不开,通用型的函数指针应该比较难设计。毕竟每一个函数的参数的个数都不一定相同。
[/Quote]
每个函数都没有参数,返回值为void。

void CXX::Func(void)

但是类可能不同。
stjay 2010-10-14
  • 打赏
  • 举报
回复
帮LZ修正一下链接
http://topic.csdn.net/u/20101012/23/a0a899d4-0ca8-4834-b773-93e8af6f28f4.html

stdcall函数指针都没法做到通用,thiscall更难了
sunlin7 2010-10-14
  • 打赏
  • 举报
回复
没有文档化的办法来实现楼主的要求。

楼主的要求很奇怪。 如果不希望C++的束缚,就应该使用C或者汇编。

类的成员函数分为静态成员函数,普通成员函数,虚成员函数。

静态成员函数不存在this指针。

从汇编的角度看:

普通成员函数就是一个固定地址的函数,在被调用的时候隐式的传入一个this指针(一般放置在ecx寄存器里面),函数可以使用this指针。

而虚函数,则是通过this指针附带的虚函数表,查找到入口,再按普通成员函数调用。

从这个角度来讲,因为类的不同,this指针上附带的信息就不同(比如附带的类的类型信息,类的虚函数表信息等),故而无法实现一个通用的this指针。
m_tornado 2010-10-14
  • 打赏
  • 举报
回复
使用的时候就是ptr<CAClass> XXXX;xxx可以指向任何CAClass的函数
如果函数都是void --stdcall void的类型~
m_tornado 2010-10-14
  • 打赏
  • 举报
回复
萌生一个概念:泛型指针~~



template <class T>
class ptr
{
typedef T* iterator;
VOID* p;

ptr()
{
p = iterator->funcaddr;
}

}

而funcaddr为每个默认类的一个标志函数,空函数

只是想法~代码没试验过~哎~
码侬 2010-10-14
  • 打赏
  • 举报
回复
没有表述清楚吗?

就是定义一个这样的函数,可以指向任何类里面的成员函数。
wolaiye05 2010-10-13
  • 打赏
  • 举报
回复
那个帖子没有打开,可以在基类中定义函数指针,其他从这个类派生出来。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧