gpt4 book ai didi

c++ - 为指针重载 operator++

转载 作者:行者123 更新时间:2023-11-30 03:22:09 25 4
gpt4 key购买 nike

我需要遍历包含我自己定义的类型的内存区域:

struct ModuleList 
{
char ModuleName[64];
int32_t NumberOfFunctions;

};

struct FunctionList
{
char FunctionName[64];
DWORD FunctionAddress;
};

这些在内存中的布局如下:

0: ModuleList[0]
0 + sizeof(ModuleList): FunctionsList[NumberOfFunctions]
0 + sizeof(ModuleList)+ NumberOfFunctions * sizeof(FunctionList): ModuleList[1]
.
.
.

我想做的是,为 ModuleList* 重载运算符++,这样我就可以轻松地正确递增我的指针,因为指针的默认++ 运算符仅递增 sizeof(ModuleList) 而我想递增 sizeof(ModuleList)和函数的大小(即 NumberOfFunctions * sizeof(FunctionList))。内存中的这些结构是完全动态的,我的程序是通过网络获取的。目前,我正在这样做:

unsigned short ModuleCount = 0;
BYTE* pTemp = (BYTE*)MemoryAdr;
for (; std::string(((ModuleList*)(pTemp))->ModuleName).find(".dll") != std::string::npos; pTemp += ModuleListSize + ((ModuleList*)(pTemp))->NumberOfFunctions * FunctionListSize)
ModuleCount++;

但我觉得它看起来很丑。有什么建议吗?

最佳答案

C++ 要求您的运算符重载至少采用一个“类类型”或枚举类型的操作数。因此,您不能为内部/POD 类型重载运算符,您需要用自制的智能指针类包装您的结构(如 Neil 所建议的)。

关于c++ - 为指针重载 operator++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51399061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com