我具有以下要素。
p1
:指向类联合的指针。
r1
在类联合中的指向区域类的指针。
A.x
在Rectangle类中的一个点。
Union和Rectangle是基类Region的派生类。
我正在执行以下操作。
auto p1 = new Union();
p1->r1 = new Rectangle();
现在我想在r1内更改一个点。
如何在指针内转换指针,例如,我尝试了此操作,但它不起作用。
p1->(Rectangle*)r1->B.x = 6;
然而,这很完美,
auto r11 = (Rectangle*)p1->r1;
r11->A.x = 1;
如何在不创建新指针的情况下将p1->(Rectangle*)r1->B.x = 6;
更改为直接更改A.x?
答案 0 :(得分:3)
您需要签出运算符优先级及其关联性。 https://en.cppreference.com/w/cpp/language/operator_precedence
正确的格式是:
((Rectangle*)p1->r1)->B.x = 6;
更确切地说,这是它的工作方式:
(Rectangle*)
,这就是为什么我们在((Rectangle*)p1->r1)
中加上括号的原因。