有一个给定的结构和一个指向该结构的指针类型的定义。
using MEMDESC = struct [[gnu::packed]] _mem_desc {
_mem_desc *pmdNext; //8 //+0
size_t ulSize; //8 //+8
unsigned int uCUN; //4 //+16
unsigned int uUUN; //4 //+20
unsigned int smallData[1018]; //4n, максимум //+24
unsigned int& operator[](unsigned int iInx){
return smallData[iInx];
}
};
using PMEMDESC = MEMDESC*;
PMEMDESC pmdWork;在代码中的某处定义。
我可以(*pmdWork)[0].wPrev = 0;用来访问,但记录本身看起来很草率到不可能的地步。使用时如何获得类似的功能pmdWork[0].wPrev=0?为了理解笨拙,使用指示的解决方案,我将给出一行:hhHandle=reinterpret_cast<void*>(&(*pmdWork)[sbIndex+1]);
您正在
operator[]为类重载,而不是为指向它们的指针。而且由于它operator[]应该是一个非静态的类方法,我们不能将它定义为int& operator[](MEMDESC* ptr, size_t idx)在类之外的范围内。您可以选择以下方法之一: