Это строго в С.вниз Кастинг иерархии с неполиморфной Типы
Допустим, вы дали одну базовую-структуру, а также 2 других производных структур. Эти производные структуры не производятся в классическом смысле (то есть: A: B), а скорее содержат только структуры базового типа. Так что, если структура А основание и B является одним из 2-х производных структур, B будет иметь элемент типа А. Как это:
struct A {
// blah blah...
};
struct B {
A part_a;
// more stuff...
}
struct C {
A part_a;
// SO MUCH STUFF
}
у вас есть функция, A_downcast_B, что-то вроде этого:
B * A_downcast_B(A * a)
{
// downcast the A* here somehow
}
Вы хотите эту функцию, чтобы вернуть 0
или -1
если 'a'
не может быть успешно downcasted на структуру типа B
. Так, например, если «производная» структура типа C
имела указатель на нее типа A*
, и этот указатель был передан этой функции, функция вернет 0
, -1
или null
.
Есть ли способ сделать это? Я думал об этом в течение нескольких часов, и это заставило меня задохнуться.
OHHH, ЧТО ТАКОЕ RTTI. Черт бы побрал мою лень за то, что я не позвонил мне. Большое спасибо! :) –