【问题标题】:Void pointer as function parameter [closed]无效指针作为函数参数
【发布时间】:2013-09-24 09:53:35
【问题描述】:
我使用两种结构来模拟“OR”和“AND”逻辑门。这些结构是相同的。我需要创建一个函数,该函数将这两个结构中的一个作为参数。类似的东西:
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中实现这个想法?
【问题讨论】:
标签:
pointers
c++-cli
void
【解决方案1】:
您可以只为两个不同的结构使用联合,然后通过联合:
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)
{
// ...
}
【解决方案2】:
你可能是指如何返回一个结构......在这种情况下就像这样:
typedef struct
{
...
} YourStruct;
YourStruct *Function(...)
{
return &GlobalStructureForAndGate;
}