2013-09-24 4 views
-2

J'utilise deux structures émulent "OU" & "ET" portes logiques. Ces structures sont les mêmes. J'ai besoin de créer une fonction qui prend comme paramètre une de ces deux structures. Quelque chose comme:Pointeur vide comme paramètre de fonction

int myfunc(void *mystruct, unsigned char param) 
{ 
switch (param) 
{ 
case 'o': ... break; //"OR" logic gate struct 
case 'a': ... break; //"AND" logic gate struct 
} 
} 

Comment réaliser cette idée dans le code managé C++/cli?

+2

Veuillez ajouter plus d'informations. – noelicus

Répondre

1

Vous pouvez simplement utiliser une union pour vos deux struct différentes et passer l'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) 
{ 
    // ... 
} 

Alternativement, et peut-être mieux (difficile de dire avec peu d'informations disponibles), il semble que votre conception pourrait bénéficier de l'utilisation d'héritage:

struct gate { // parent class 
    // ... 
}; 

struct AND_gate: public gate { 
    // ... 
}; 

struct OR_gate: public gate { 
    // ... 
}; 

int myfunc(gate * my_gate, unsigned char param) 
{ 
    // ... 
} 
0

vous pourriez dire comment vous retournez une structure ... dans ce cas, comme ceci:

typedef struct 
{ 
... 
} YourStruct; 

YourStruct *Function(...) 
{ 
    return &GlobalStructureForAndGate; 
} 
Questions connexes