【发布时间】:2011-01-31 02:46:41
【问题描述】:
这完全是在 C 中。
假设您有一个基本结构和两个其他派生结构。这些派生结构不是从经典意义上派生的(即: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
}
如果'a' 无法成功向下转换为B 类型的结构,您希望此函数返回0 或-1。例如,如果 C 类型的“派生”结构有一个指向它的 A* 类型的指针,并且该指针被传递给此函数,则该函数将返回 0、-1 或 null .
有没有办法做到这一点?我已经考虑了几个小时了,这让我很困惑。
【问题讨论】: