Void指针作为函数参数

时间:2013-09-24 09:53:35

标签: pointers c++-cli void

我使用两个结构模拟“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中实现这个想法?

2 个答案:

答案 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;
}