Ошибка при приведении базового указателя: `Не удается создать экземпляр абстрактного класса`

Я работаю с PhysX в C ++ и получаю сообщение об ошибке,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 — это абстрактный класс, который наследуется от PxJoint. Я считаю, что должен быть какой-то способ доступа к публичным членам &j с помощью joints[0], но, если есть, я не делаю это правильно.

-1

Решение

Как сказал Joachim, вы пытаетесь привести результат setDrivePosition к типу PxD6Joint, что неверно (тем более что метод не возвращает ничего. Я полагаю, вы пытаетесь каким-то образом привести объект, на который указывают суставы [0], к PxD6Joint Тип, который бесполезен, он уже имеет правильный класс.

Но этот класс чистый абстрактный класс: некоторые методы не реализованы (setDrivePosition (const PxTransform &поза) = 0). Вам нужно использовать объект подкласса PxD6Joint со всеми реализованными методами.

0

Другие решения


По вопросам рекламы [email protected]