我希望能够在一个类中包含我的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)
最佳答案
将函数修改为static
将使您可以使用它,而无需先根据需要实例化成员:
class Cursor
{
public:
typedef BOOL(__stdcall *_SetCursorPos) (int X, int Y);
static _SetCursorPos SetCursorPosFunction;
};
Cursor::SetCursorPosFunction(x,y)
现在应该可以工作了(假设您首先对其进行了初始化)。您还需要在全局空间中初始化静态成员。像
Cursor::_SetCursorPos Cursor::SetCursorPosFunction = nullptr;
这样的东西应该可以工作。但是要小心,只能在一个翻译单元中使用它。