Klasseninstanz Werte zuweisen



  • Moin,
    ich hab folgendes Problem: Ich möchte einer Klasseinstanz gerne über eine "Werteliste" initalisieren bzw. einer bereits vorhandenen Instanz Werte zuweisen:

    class foo
    {
    ...
    };
    
    foo a = {1,3,3};
     //bzw.
    foo b;
    b = {3,5,7};
    

    Muss ich in beiden Fällen den operator= überladen(wenn ja, wie?) und wie sieht das Ganze aus, wenn ich ein Array aus foos habe? Muss ich dort zusätzlich noch etwas beachten?



  • Muffel schrieb:

    Moin,
    ich hab folgendes Problem: Ich möchte einer Klasseinstanz gerne über eine "Werteliste" initalisieren bzw. einer bereits vorhandenen Instanz Werte zuweisen:

    Mit einer Werteliste wirst du da kein Erfolg haben, aber du kannst tatsächlich mit angepassten Konstruktoren und dem Zuweisungsoperator ähnliches vollbringen:

    class A
    {
      private:
        int a;
        int b;
        int c;
      public:
        A(int a=0, int b=0, int c=0)
        : a(a),
          b(b),
          c(c)
        {}
    
        A& operator(
          A const & rhs)
        {
          this->a = rhs.a;
          this->b = rhs.a;
          this->c = rhs.a;
        }
    
        //... Kopierkonstruktor etc. für Beispiel ausgelassen
    };
    
    int main()
    {
      A a = A(1, 2, 3); (Zuweisung über Konstruktor)
      a = A(2, 3, 4); (Zuweisung über Temporäres Objekt & Zuweisungsoperator)
    }
    

    cu André



  • Das was du machen willst, geht erst im nächsten Strandard in dieser Form...leider.

    wobei das nur als konstruktorersatz funktioniert, nicht als zuweisung, einem array kannst du ja auch nicht erst hinterher mit der Klammer notation die Werte zuweisen.



  • Alles klar... Vielen Dank euch beiden!


Anmelden zum Antworten