问问题
640 次
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 回答