3

我有另一个关于指针的问题。

我有一个带有以下标题的函数:

 addActor (NxuPhysicsCollection &c, NxActor &a, const char *userProperties=0, const char *actorId=0)

我正在尝试像这样使用它:

 NXU::NxuPhysicsCollection* collection = new NXU::NxuPhysicsCollection();
 NxActor* actor = *actors++;
 NXU::addActor(collection, actor, NULL, NULL);

但我收到以下错误:

“NXU::NxuPhysicsCollection&”类型的引用(非 const 限定)无法使用“NXU::NxuPhysicsCollection*”类型的值进行初始化(这是针对集合参数,actor 也会出现相同的错误)

我应该如何将集合和参与者参数传递给函数才能正常工作?

我试过这个:

 NXU::addActor(&collection, &actor, NULL, NULL);

但这也不起作用,它给了我错误:

 "Initial value of reference to non-const must be a lvalue."

任何帮助是极大的赞赏。

编辑:如果我这样使用它:

NXU::addActor((NXU::NxuPhysicsCollection&)collection, (NxActor&)actor, NULL, NULL);

它不再给我错误了。这个对吗?

我必须提到 NXU 和 NX 命名空间是封闭源代码,我无法修改它们的实现方式

4

3 回答 3

3

ca参数都是引用

将它们传递为:

NXU::addActor(*collection, *actor, NULL, NULL);

这种行为称为指针解引用。

于 2013-05-21T16:01:56.733 回答
3

由于 and 的成员函数的形式参数ca引用collectionandactor指针,您需要取消引用指针以使其与引用兼容:

// No need to pass NULLs for the defaulted parameters, so
// the trailing NULL, NULL are removed.
NXU::addActor(*collection, *actor);

或者,您可以更改构造函数的签名以接受指针而不是引用:

addActor (NxuPhysicsCollection *c, NxActor *a, const char *userProperties=0, const char *actorId=0)
//                             ^           ^
//                             |           |
//                             Here and Here
于 2013-05-21T16:03:04.720 回答
0
NXU::addActor(*collection, *actor, NULL, NULL);

因为

 addActor (NxuPhysicsCollection &c, NxActor &a, const char *userProperties=0, const char *actorId=0)

接收collectionactor 通过引用,而不是通过指针

于 2013-05-21T16:00:58.867 回答