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
有没有办法使这更加comp lex(不是
asm
深)?
您似乎知道,对于任何指针或数组'p'和索引'i',表达式'p [i]'和'*(p + i)'是相等的。为什么你更愿意使用(IMO)更难读指针算术?如果你懒惰的话,也会写更多的角色。 –
请解释你为什么要这样做。 –
'ppy [i]'**是**指针算术运算 – user463035818