我使用两个结构模拟“OR”& “和”逻辑门。这些结构是相同的。我需要创建一个函数,它将这两个结构中的一个作为参数。类似的东西:
int myfunc(void *mystruct, unsigned char param)
{
switch (param)
{
case 'o': ... break; //"OR" logic gate struct
case 'a': ... break; //"AND" logic gate struct
}
}
如何在托管代码c ++ / cli中实现这个想法?
答案 0 :(得分:1)
你可以使用一个union来表示你的两个不同的结构,然后传递union:
struct AND_gate {
// ...
};
struct OR_gate {
// ...
};
union gate {
AND_gate and_gate;
OR_gate or_gate;
};
int myfunc(gate * my_gate, unsigned char param)
{
// ...
}
或者,或许更好(很难用可用的有限信息来判断),听起来你的设计可能会从使用继承中受益:
struct gate { // parent class
// ...
};
struct AND_gate: public gate {
// ...
};
struct OR_gate: public gate {
// ...
};
int myfunc(gate * my_gate, unsigned char param)
{
// ...
}
答案 1 :(得分:0)
你可能意味着如何返回一个结构......在这种情况下就像这样:
typedef struct
{
...
} YourStruct;
YourStruct *Function(...)
{
return &GlobalStructureForAndGate;
}