我有一个指向对象的指针。如何调用期望引用的函数?

时间:2009-02-16 08:42:56

标签: c++ pointers reference

我有一个引用对象的函数:

void move(Ball& ball);

我有另一个函数调用'move()',它有一个指向ball的指针:

void foo(Ball* ball){
 //call move()
}

foo()如何将球传给move()

应该是这样的:

move(*ball);

或:

move(ball);

或:

move(&ball);

4 个答案:

答案 0 :(得分:11)

第一个,移动(*球)。

第二个,move(ball)尝试传递指针,第三个,move(& ball)尝试传递一个指向指针的指针。

答案 1 :(得分:6)

移动(*球);

这就是原因。您可以将引用视为基本上指向它所传递的对象的指针。因此,您需要对象本身,而不是指针。如果你调用move(ball),你将获得指针的引用(指针),而不是对象。相反,移动(*球)取消引用指针,引用然后获取该解除引用对象的指针。

答案 2 :(得分:4)

使用指针上的*运算符取消引用它,从而获得Ball对象。因为您实际上是将参数传递给接受Ball&的函数。 (所以Ball参考)只传递参考,而不是整个对象。正确的用法是:

move(*ball);

但我建议您以“说出”其性质的方式命名变量,因此 ballPtr ball_ptr 将是更合适,你永远不会忘记取消引用它。

答案 3 :(得分:1)

第一个是正确的是移动(*球) ball是指向对象的指针,在取消引用其指向球对象指向的对象后,需要取消引用它。