virtual auch für Variablen?



  • Gibt es eine Möglichkeit eine Variable wie eine Funktion virtuell zumachen?

    Hier mal ein Bsp wie ich es mir vorstelle.

    struct Objek1
    {
      int a;    //a als int (soll virtuell sein)
      ...
    };
    
    struct Objekt2 : Objekt1
    {
      double a;    //a soll jetzt double sein
      ...
    }
    


  • Dümmer gehts nimmer! 🤡



  • @🤡
    Was meinst Du damit?
    Ich habe ein Frage gestellt und hoffte auf ein Antwort.
    Aber Danke für nix.

    @alle
    Ich habe jetzt eine Lösung gefunden, die den gewünschten Effekt hat.
    Ich habe die Variable über ne template Klasse dargestellt, ich möchte jetzt nur wissen, ob ich da noch etwas beachten muß?

    Hier mal ein Bsp. mit nem Vector, sollte aber auch mit jedem anderen template fuktionieren:

    struct Vektor
    {
      vector<int> b;
      ...
    };
    
    struct CVektor : Vektor
    {
      vector<float> b;
      ...
    };
    


  • Es ist blödsinn, denn variablen können nicht virtual sein. Was würde es denn bringen?

    eine Variable beinhaltet einen Statuswert. Wie stellst du dir dass dann vor:
    eine abgeleitete Klasse hat inkompatible Statuswerte zur Basisklasse?

    ne...

    Was du machst ist einfach 'verstecken'
    CVector::b verdeckt Vector::b - also Blödsinn



  • Ok,
    die Sache mit den Statuswerten habe ich (hoffentlich) verstanden. 🙄

    Nun eine Frage zum verstecken, bekomme ich damit evtl. Probleme oder ist das zulässig?



  • Ein mögliches Problem:

    void setMember(Basis & base)
    {
        base.member = value;
    }
    
    Abgeleitet a;
    
    setMember(a); // ja hubs, da passiert ja was ganz unerwartetes....
    


  • Danke,

    da hab ich wohl nicht weitgenug gedacht.


Anmelden zum Antworten