Суть такова: есть код на Objective C++, компилируется с помощью GCC-LLVM, в нем есть класс С++, в конструкторе которого создаётся экземпляр obj-c класса. Можно ли указатель на него кастовать в void*, а потом в деструкторе кастовать обратно с целью вызвать release?
cppclass.h:
class CPPClass
{
void *m_ptr;
}
cppclass.mm:
@interface objclass
{
NSString *m_blabla;
}
- (id)init;
@end
CPPClass::CPPClass()
{
m_ptr = (void*) [[objclass alloc] init];
}
CPPClass::~CPPClass()
{
objclass *p = (objclass*) m_ptr;
[p release];
}
Зачем такое извращение? Компилятор почему-то не даёт объявить objclass в заголовочном файле. Eсли же в нём сделать forward-declaration «class objclass;» для указателя, то потом ругается на переопределение objclass внутри .mm файла.
Ну или макфак какой-нибудь по теме посоветуйте.
obj-c вижу впервые в жизни и вообще он не нужен и писать на нём дальше не планирую :)