递归火山软件开发平台

标题: 取方法地址 [打印本页]

作者: lulume1    时间: 2023-4-29 17:41
标题: 取方法地址
类库有 取静态方法地址   如果要取不是静态方法的地址,怎样才能取到


作者: Xelloss0618    时间: 2023-4-29 17:52
只有静态方法才能取到地址,类的动态方法是通过类指针调用的
作者: server    时间: 2023-4-29 17:53
  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 方法 _取类函数地址 <公开 静态 类型 = 变整数>
  3. 参数 This <类型 = 变整数>
  4. 参数 Index <类型 = 整数>
  5. {
  6.     返回 (_读变整数 (_读变整数 (This, ) + (Index - 1) * 4, ))
  7. }
复制代码

不知道这个能不能。

this  用  取对象自身类指针()

作者: Xelloss0618    时间: 2023-4-29 18:02
server 发表于 2023-4-29 17:53
不知道这个能不能。

this  用  取对象自身类指针()

没用吧。
一、你没算上类的成员变量和常量
二、你不能保证动态方法的编译顺序
三、动态方法也不是全部都会被编译
作者: lulume1    时间: 2023-4-29 18:16
Xelloss0618 发表于 2023-4-29 17:52
只有静态方法才能取到地址,类的动态方法是通过类指针调用的

怎样指针调用呀,能否写下代码看一下
作者: Xelloss0618    时间: 2023-4-29 18:25
lulume1 发表于 2023-4-29 18:16
怎样指针调用呀,能否写下代码看一下

读指针处对象 (类指针, 类名).方法 (参数)
作者: lulume1    时间: 2023-4-29 18:37
Xelloss0618 发表于 2023-4-29 18:25
读指针处对象 (类指针, 类名).方法 (参数)

类指针这个参数是用什么方法取的呀
作者: 雨中漫步    时间: 2023-4-29 19:26
lulume1 发表于 2023-4-29 18:37
类指针这个参数是用什么方法取的呀

创建对象指针
作者: 创世魂    时间: 2023-4-29 19:30
lulume1 发表于 2023-4-29 18:37
类指针这个参数是用什么方法取的呀

<火山程序 类型 = "通常" 版本 = 1 />

方法 取本对象地址 <公开 类型 = 变整数 @嵌入式方法 = "">
{
    @ (INT_P)this
}


这样吧。
作者: Xelloss0618    时间: 2023-4-29 20:33
取对象自身指针,其实取变量地址也行
作者: server    时间: 2023-4-29 21:23
Xelloss0618 发表于 2023-4-29 20:33
取对象自身指针,其实取变量地址也行

能否科普一下,
为什么在没有定义为 变量 的情况下,

就可以直接调用 非静态方法??
会否因 getthis 这个方法为静态的时候就已经将该类在内部定义声明了?
作者: tmf19901124    时间: 2023-4-30 08:50
标准做法,std::function+std::bind实现类方法回调
作者: Xelloss0618    时间: 2023-4-30 10:37
server 发表于 2023-4-29 21:23
能否科普一下,
为什么在没有定义为 变量 的情况下,

火山好像会在启动时,对所有用到的对象类型都初始化一个全局的实例
作者: urenai    时间: 2023-4-30 17:10
那不算真非静态调用。
作者: wangvoldp    时间: 2023-4-30 19:17
server 发表于 2023-4-29 18:21
好吧!
我用这个方法 取d3dx 类方法好使

什么游戏这么肝
作者: li327065266kun    时间: 2023-5-1 20:46
server 发表于 2023-4-29 18:21
好吧!
我用这个方法 取d3dx 类方法好使

:噜阿噜 咋玩的?
作者: li327065266kun    时间: 2023-5-2 11:51
server 发表于 2023-5-1 23:18
既然可以访问 初始的类。
那能否  取 到 卧槽 这个方法的指针??

取不到指针,只能直接调用的,你那个HOOK有视频教程没啊??




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4