伙计们,我是 c++ 的新手。我刚刚写了这个类:
class planet
{
public:
float angularSpeed;
float angle;
};
这是一个尝试修改对象角度的函数:
void foo(planet* p)
{
p->angle = p->angle + p->angularSpeed;
}
planet* bar = new planet();
bar->angularSpeed = 1;
bar->angle = 2;
foo(bar);
bar 中的角度似乎完全没有变化。
最佳答案
请注意,您是通过指针而不是引用传递 bar
。传递引用看起来像这样:
void foo(planet& p) // note: & instead of *
{
p.angle += p.angularSpeed; // note: . instead of ->
}
按引用传递有一个额外的好处,即 p
不能是空引用。因此,您的函数不会再导致任何 null 取消引用错误。
其次,这是一个细节,如果您的 planet
仅包含公共(public)成员变量,您也可以将其声明为 struct
(默认可访问性为 公共(public)
)。
PS:据我所知,您的代码应该可以工作;至少你向我们展示的部分。
关于C++ 指针传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3746570/