class 中的 Typedef 函数
Typedef function inside a class
我希望能够在 class 中使用我的 typedef 函数。但我找不到办法做到这一点。我需要扫描地址,所以我不能硬编码,因此我需要像这样设置地址 SetCursorPosFunction = (_SetCursorPos)(address to function);
示例:
class Cursor
{
public:
typedef BOOL(__stdcall *_SetCursorPos) (int X, int Y);
_SetCursorPos SetCursorPosFunction;
};
我希望能够像这样调用函数Cursor::SetCursorPosFunction(x,y)
我的意思的例子。
void Function()
{
DWORD_PTR AddressToFunctionSetCourserPos = Find(....);
Cursor::SetCursorPosFunction = (Cursor::_SetCursorPos)(AddressToFunctionSetCourserPos ); //In final version it is going to be in a separate function where i get all the functions i need (This find() function can not be looped or called often, it is going to create lag etc.).
Cursor::SetCursorPosFunction(1, 1);
}
我收到错误:
fatal error LNK1120: 1 unresolved externals
error LNK2001: unresolved external symbol "public: static int (__cdecl* Cursor::SetCursorPosFunction)(int,int)" (?SetCursorPosFunction@Cursor@@2P6AHHH@ZEA)
如果您打算模拟一个成员函数,您应该在尝试使用它之前创建一个游标实例:
Cursor cursor;
cursor.SetCursorPosFunction(x, y);
您还可以向 class 添加一个构造函数来初始化指针:
class Cursor
{
public:
Cursor()
: SetCursorPosFunction((_SetCursorPos) GetProcAddress(...))
{ }
typedef BOOL(__stdcall *_SetCursorPos) (int X, int Y);
const _SetCursorPos SetCursorPosFunction;
};
将函数修改为 static
将允许您使用它而无需根据需要先实例化成员:
class Cursor
{
public:
typedef BOOL(__stdcall *_SetCursorPos) (int X, int Y);
static _SetCursorPos SetCursorPosFunction;
};
Cursor::SetCursorPosFunction(x,y)
现在应该可以工作了(前提是您先对其进行了初始化)。
您还需要初始化全局中的静态成员space。 Cursor::_SetCursorPos Cursor::SetCursorPosFunction = nullptr;
之类的东西应该可以工作。但要注意只有一个翻译单元。
我希望能够在 class 中使用我的 typedef 函数。但我找不到办法做到这一点。我需要扫描地址,所以我不能硬编码,因此我需要像这样设置地址 SetCursorPosFunction = (_SetCursorPos)(address to function);
示例:
class Cursor
{
public:
typedef BOOL(__stdcall *_SetCursorPos) (int X, int Y);
_SetCursorPos SetCursorPosFunction;
};
我希望能够像这样调用函数Cursor::SetCursorPosFunction(x,y)
我的意思的例子。
void Function()
{
DWORD_PTR AddressToFunctionSetCourserPos = Find(....);
Cursor::SetCursorPosFunction = (Cursor::_SetCursorPos)(AddressToFunctionSetCourserPos ); //In final version it is going to be in a separate function where i get all the functions i need (This find() function can not be looped or called often, it is going to create lag etc.).
Cursor::SetCursorPosFunction(1, 1);
}
我收到错误:
fatal error LNK1120: 1 unresolved externals
error LNK2001: unresolved external symbol "public: static int (__cdecl* Cursor::SetCursorPosFunction)(int,int)" (?SetCursorPosFunction@Cursor@@2P6AHHH@ZEA)
如果您打算模拟一个成员函数,您应该在尝试使用它之前创建一个游标实例:
Cursor cursor;
cursor.SetCursorPosFunction(x, y);
您还可以向 class 添加一个构造函数来初始化指针:
class Cursor
{
public:
Cursor()
: SetCursorPosFunction((_SetCursorPos) GetProcAddress(...))
{ }
typedef BOOL(__stdcall *_SetCursorPos) (int X, int Y);
const _SetCursorPos SetCursorPosFunction;
};
将函数修改为 static
将允许您使用它而无需根据需要先实例化成员:
class Cursor
{
public:
typedef BOOL(__stdcall *_SetCursorPos) (int X, int Y);
static _SetCursorPos SetCursorPosFunction;
};
Cursor::SetCursorPosFunction(x,y)
现在应该可以工作了(前提是您先对其进行了初始化)。
您还需要初始化全局中的静态成员space。 Cursor::_SetCursorPos Cursor::SetCursorPosFunction = nullptr;
之类的东西应该可以工作。但要注意只有一个翻译单元。