Umwandlung zweier gleichen Strukturen



  • Hallo Board!
    Schneie gleich mal mit einer Frage herein:
    Und zwar habe ich zwei Strukturen A und B erstellt, beide enthalten die selben members
    struct A/B {int x;int y; int a; int b} und von struct A gibt es einen Vector mit dessen Instanzen. Jetzt möchte ich den ganzen Vector in Struct B umwandeln, also etwa so: B Name = (B) A Instanz;
    Geht das irgendwie oder muss ich da über eine Schleife gehen und die ganzen Members einzeln zuweisen?
    Gruß und vielen Dank!



  • EDIT: Sind überhaupt beide Strukturen nötig?



  • Die einzelnen Datenmember musst Du natürlich schon selber zuweisen.
    Entweder mit Hilfe des Kopierkonstruktors:

    B::B ( const A & aObjekt )
    : x ( aObjekt.x ),
      y ( aObjekt.y ),
      a ( aObjekt.a ),
      b ( aObjekt.b )
    {
    }
    

    oder Typumwandlung mittels operatoren:

    class A
    {
    operator B (  )const
    {
     B bObjekt;
     bObjekt.x =  x;
     bObjekt.y =  y;
     bObjekt.a =  a;
     bObjekt.b =  b;
     return bObjekt;
    }
    };
    


  • vielen dank erstmal! allerdings habe ich ein anderes problem:
    und zwar gibt es eine Struktur, die ist fest und kann ich nicht ändern. Diese enthält 4 int Variablen, sonst nichts. Dann gibt es noch die Klasse QRect aus QT3. Diese enthält u.a. 4 int Werte (x,y, width, heigth), auf die man nur über setX(int x) z.B. zugreifen kann. Jetzt habe ich eine Funktion geschrieben, die mir einen Vektor von der obigen Struktur zurück gibt. Gibt es da einen eleganten weg diesen Vektor anschließend in einen vector<QRect> umzuwandeln? Bis jetzt fiel mir nur ein, jedes element vom vektor zu schnappen und dann ein neues QRect Obj. zu erstellen und auf einen neuen Vector zu pushen. Das ist aber nicht besonders effektiv...
    Danke nochmals!


Log in to reply