Automatische typ Konvertierung für jedem member in einem struct



  • Halloeche liebe Leute,

    ich moechte gern ein Klasse schreiben die in der Lage ist, beliebige structs zu konvertieren. Die Konvertierung soll den Typ von jeden member automatisch erkennen und in den entsprechenden Zieltyp umwandeln. Diese Problem besteht aktuell bei dem Oracle Call Interface. Es ist notwendig die native data types in Orcale types ueber entsprechende Funktionen zu konvertieren. Diese Aufgabe ist einfach laesstig wenn man die DB mit verschiedenen record fuettern moechte. Man ist gezwungen für jedes record zwei structs zu declarieren und die Typkonvertierung fuer jeden member expliziert durchzuführen. Gibt es eine Loesung diese Aufgabe ? Vorschläge ?

    z.B.:

    struct A {
    int member1,
    wchar_t member2
    ...
    };

    struct B {
    OCIint member1,
    OCIString member2
    ...
    }

    ...
    OCINumberFromInt(A.member1, sizeof(int), OCI_NUMBER_UNSIGNED, B.member1);
    OCIStringAssignText(A.member2, strlen(A.member2), B.member2);
    usw.

    Viele Gruesse, ttannebe



  • Du könntest eine Template-Funktion schreiben, die sowas macht (vorausgesetzt, die Elemente heißen in jeder deiner Klassen gleich und können per operator= ineinander umgewandelt werden):

    //Achtung, ungetestet:
    
    template<class S1,class S2> void convert(S1& tgt, const S2& src)
    {
      tgt.member1=src.member1;
      tgt.member2=src.member2;
    }
    


  • Ein guter Vorschlag. Ich denke ich werde es mal ausprobieren und melde mich alsbald.

    Gruesse ttannebe


Anmelden zum Antworten