Это строго в C.
Скажем, у вас есть одна базовая структура и 2 других производных структуры. Эти производные структуры не являются производными в классическом смысле (то есть: A: B), скорее, они содержат только структуры базового типа. Поэтому, если структура A является основой, а B является одной из 2 производных структур, B будет иметь член типа A. Например:
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'
не удалось успешно преобразовать в структуру типа B
. Так, например, если бы «производная» структура типа C
имела указатель на нее типа A*
, и этот указатель был передан этой функции, функция вернула бы 0
, -1
или null
.
Есть ли способ сделать это? Я думал об этом уже несколько часов, и это поставило меня в тупик.