1
4

3 回答 3

1

你在你的代码中做了什么

*intersection->x_val = x;

相当于

(*(intersection->x_val)) = x;

因为通过指针选择操作符的优先级->高于解引用操作符,而后者又高于赋值操作符。*=

所以首先你选择double x_val的班级成员Point。其次,您尝试将一元解引用运算符*应用于结果。并且因为 x_val 是双精度的,而不是指针,这是解引用运算符所期望的,编译器会报告错误。

因此,这里的解引用运算符过多,足以执行以下操作

intersection->x_val = x;
于 2012-10-19T13:59:31.017 回答
1
intersection->member

将取消引用一个指针intersection。这与

(*intersection).member

你不需要取消引用它两次。

于 2012-10-19T09:49:28.060 回答
0

假设您得到的错误是两行的编译错误:

*intersection->x_val = x;  // here i got error 
*intersection->y_val = y;  // here i got error 

问题是您要取消引用指针,然后->在其上使用取消引用运算符。

相反,您应该这样做:

intersection->x_val = x; 
intersection->y_val = y;  // leave it as a pointer

或者

*intersection.x_val = x; 
*intersection.y_val = y;  // use it as an object
于 2012-10-19T09:50:04.720 回答