2013-09-24 4 views
-2

Я использую две структуры эмулировать «ИЛИ» & «И» логические ворота. Эти структуры одинаковы. Мне нужно создать функцию, которая получает в качестве параметра одну из этих двух структур. Что-то вроде:Указатель пустоты как функциональный параметр

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

Пожалуйста, добавьте дополнительную информацию. – noelicus

ответ

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) 
{ 
    // ... 
} 
0

вы могли бы означать, как вы вернуть структуру ... в этом случае так же, как это:

typedef struct 
{ 
... 
} YourStruct; 

YourStruct *Function(...) 
{ 
    return &GlobalStructureForAndGate; 
} 
Смежные вопросы