转换基指针时出错:`无法实例化抽象类`

时间:2015-06-04 12:33:50

标签: c++ casting abstract-class physx

我在C ++中使用PhysX并在以下代码中收到错误cannot instantiate abstract class

std::vector < PxJoint* > joints;
PxD6Joint* j = PxD6JointCreate(*gPhysics, a0, t0, a1, t1);
joints.push_back (j);
(PxD6Joint)(joints[0])->setDrivePosition(PxTransform()); //error here

代码只是一个例子。 PxD6joint is an abstract class that inherits from PxJoint。我认为必须有一些方法可以通过&j访问joints[0]的公开成员,但是,如果有的话,我做得不对。

1 个答案:

答案 0 :(得分:0)

正如Joachim所说,你试图将setDrivePosition的结果转换为PxD6Joint类型,这是错误的(特别是因为该方法不会返回任何内容。我猜你正试图以某种方式抛出关节所指向的对象[0] ]到PxD6Joint类型,这是没用的,它已经是正确的类。

但是这个类是抽象类:没有实现某些方法(setDrivePosition(const PxTransform&amp; pose)= 0)。您需要使用一个PxD6Joint子类的对象,并实现所有方法。