да, то что надо, только мне удается почему-то у себя без ошибок это завести.
1. при попытке скомпилировать как у Вас показано, компилируется с ошибкой error C2664: 'PostReactor::cast' : cannot convert parameter 1 from 'void *' to 'const AcRxObject *'
2. Всевозможные преобразования типов, позволяющие убрать эту ошибку,
наподобие таких:
(AcDbObject*)arr->at(0)
(AcRxObject*)arr->at(0) или
((AcDbObject*)arr->at(0))->isA()
приводят к ошибкам при выполнении
Unhandled exception at 0x7b68683e in acad.exe: 0xC0000096: Privileged instruction. в функции
inline bool AcRxObject::isKindOf(const AcRxClass* pOtherClass) const
{
->->const AcRxClass * pMyClass = this->isA();
return pMyClass == NULL ? false : pMyClass->isDerivedFrom(pOtherClass);
}
в первых двух случаях, и просто violation в третьем.
Собственно вот описание класса реактора:
class PostReactor : public AcDbObject
{
public:
ACRX_DECLARE_MEMBERS( PostReactor );
PostReactor() {};
void openedForModify( const AcDbObject* );
void modified( const AcDbObject* );
};
ACRX_DXF_DEFINE_MEMBERS(PostReactor, AcDbObject, AcDb::kDHL_CURRENT, AcDb::kMReleaseCurrent, 0, PostReactor, MainSolution);
Мне не очень понятно назначение ACRX_DECLARE_MEMBERS и ACRX_DXF_DEFINE_MEMBERS, может дело в них?