【问题标题】: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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-29
      • 2011-02-04
      • 2012-03-07
      • 1970-01-01
      • 2012-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多