struct Test1 {
struct Test2 {
DWORD VA1 = 0;
DWORD VA2 = 0;
Test2(DWORD hp):VA1(hp) { }
} *Ppy[5];
Test1() {
for (int i = 0; i < 5; i++)
*(Ppy + i) = new Test2((DWORD)i+2);
}
~Test1() {
for (int i = 0; i < 5; i++)
delete *(Ppy + i);
}
};
void main() {
Test1*Als = new Test1;
for (int i = 0; i < 5; i++)
Als->Ppy[i]->VA2;
// doesn't work-> cout << Als->*(Ppy + i)->VA2 << endl;
delete Als;
}
您好
如何将整行(如果可能)或至少Ppy[i]
转换为
指针式/算术:Als->Ppy[i]->VA2
这样的事情,但它不起作用:Als->*(Ppy + i)->VA2
有没有办法让这更复杂(不是asm
深)?
答案 0 :(得分:0)
而不是:
Als->Ppy[i]->VA2;
你可以写:
(*(Als->Ppy + i))->VA2;
Als->Ppy
Als->Ppy + i
*(Als->Ppy + i)
数组元素的值本身就是一个指针,在使用它指向结构的元素之前,需要将上面的表达式包装在parens中。