C++ 指针传递

标签 c++

伙计们,我是 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/

相关文章:

c++ - 接受新对象的宏

c++ - 使用 Visual Studio 进行 Android C++ 开发

c++ - 这个C头文件写得正确吗?

c++ - 我可以模仿在 C++ 中重新定义 bool 的 C 头文件吗?

c++ - 无效协变返回类型,嵌套类 C++

c++ - 使用 IOCP 检测子进程的退出/失败 - C++ - Windows

c++ - 如何编写像 "size_t s = 16 MByte"这样的文字常量?

c++ - 我想从二维数组 C++ 中打印出一些值

c++ - 回调参数 C++ 中的协方差

c++ - 使用 pthreads 作为类成员的互斥体