Код: Выделить всё
-frttiКод: Выделить всё
class Animal {
public:
void * p;
virtual ~Animal( void ){}
};
class Cat: public Animal {
public:
Cat( void ){
p = this;
// p = dymamic_cast< void *>( this ); // also does not work
}
};
class SiameseCat: public Cat{};
int main( int argc, char *argv[] ){
SiameseCat *pSCat = new SiameseCat();
Cat *pCat = static_cast( pSCat->p );
SiameseCat *pElPussyCato = dynamic_cast< SiameseCat *>( pCat );
assert( pElPussyCato != NULL ); // fails
}
Я установил точки останова, а void * - то же значение, что и pscat , и то же самое, что и Pcat . (Как и следовало ожидать).
Я не использую общие библиотеки (не уверен, что вы даже можете сделать это на ESP32).
Я видел некоторые ошибки GCC, связанные с этим, поэтому я подумал, что упомяну об этом. У меня есть успешная работа TypeID в другом месте в моей программе, поэтому RTTI определенно там. Есть идеи?
Подробнее здесь: https://stackoverflow.com/questions/796 ... expectedly
Мобильная версия