我在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]
的公开成员,但是,如果有的话,我做得不对。
答案 0 :(得分:0)
正如Joachim所说,你试图将setDrivePosition的结果转换为PxD6Joint类型,这是错误的(特别是因为该方法不会返回任何内容。我猜你正试图以某种方式抛出关节所指向的对象[0] ]到PxD6Joint类型,这是没用的,它已经是正确的类。
但是这个类是纯抽象类:没有实现某些方法(setDrivePosition(const PxTransform&amp; pose)= 0)。您需要使用一个PxD6Joint子类的对象,并实现所有方法。