编辑:谢谢,一如既往的惊人帮助:)
我找不到解决方案,我有一个基类的 unique_ptr,它具有派生类的数据,并且我想将其类型设置为派生类,以便我可以访问派生成员。看这段代码:
#include <memory>
#include <iostream>
class Base
{
public:
int v1 = 0xAAAAAAAA;
};
class Derived : public Base
{
public:
int v2 = 0xBBBBBBBB;
};
int main()
{
std::unique_ptr<Base> b1(new Derived); //How to access b1->v2 ?
std::unique_ptr<Base> b2(new Base);
std::getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
b1 的类型是 Base,但它的数据包含 Derived 的数据。看:
很难得到吗?我想过操纵内存字节,比如说 [b1+4] (伪思想)并访问它,但我想到了复杂的对象,因为我正在为游戏做一个实体系统,我不能这样做:(
谢谢 !
我使用CE对旧游戏进行逆向工程.我找到了修改单元HP的代码,但我找不到基址,因为偏移是负的.
问题是我甚至不知道它是如何工作的,这对我来说听起来很愚蠢,为什么编译器/ dev会这样做呢?它是一种堆栈临时指针吗?有没有办法找到它?(我很确定有一种方法)这是令人沮丧的,因为我发现像ID,HP和东西的偏移,但基础...我通常没有问题,抵消是积极的.
我认为基地将是一些东西[esi-STRUCTURE_SIZE]
,最后一项将是[esi]
或者也许我完全错了.
谢谢 :)