Rückgabetyp einer Funktion variiert, was tun?



  • Haber folgendes Problem:

    Der Rückgabetyp meiner Funktion kann von 32Bit bis bool alle integer Datentypen haben. also s32,u32,s16,u16,s8,u8 und bool.

    Wie löse ich das am besten?

    Meine Idee wäe ein union zurückzugeben, aber mein Problem ist,
    woher weis der caller welcher Typ nun zurückgegeben wurde?
    Denn er muss ja im Union das entsprechende Element lesen.



  • ^^machst du dir eine struct, die die union und ein element enthält, dass angibt, was in der union ist. so etwa:

    struct datatype
    {
       enum type_id id;    // <-- hier rein um was es geht
       union types t;      // <-- die union mit dem eigentlichen wert
    };
    

    🙂



  • ja das hab ich mir auch gedacht,
    ist auch sicherlich ne tolle lösung,
    aber so hat der caller den aufwand nachzuprüfen was es nun ist.

    Ginge es denn nicht irgendwie ganz anders. hmmm



  • In C ist das quasi die einzige Möglichkeit, jede Bibluiothek, die solche Datenkapselung bereitstellt, macht es so (ich hab's ursprünglich in GTK+ gesehen).



  • Ja ich werde es anscheinend so lösen.
    Ich danke euch für die tips


Log in to reply