Überprüfen mehrerer Member in Menge von Objekten.



  • Hallo,

    Ich habe mehrere Objekte, die bestimmte Eigenschaften haben (z.B. Color). Nun will ich bei einer Mehrfachauswahl in einem Property-Grid (wie z.B. bei VisualStudio) alle diese Objekteigenschaften miteinander vergleichen und einen Wert anzeigen, falls alle die selbe Eigenschaft haben (z.B. alle schwarz) und "N/A", wenn sich auch nur ein Objekt darin unterscheidet. Nun könnte ich das ganz einfach über eine Schleife machen, aber das wäre ja ein ziemlicher Codebloat, bei sagen wir mal 20 Eigenschaften die so ein Objekt haben kann. Ich habe mir verschiedene Gedanken gemacht wie man das lösen kann.

    1. Über define. Kurz, aber nicht schön
      bool result;
      CHECK_ALL(color, result)

    2. Über getter-Funktionen und Funktionspointer
      bool result = checkAll(&Object::getColor);

    Ich hoffe es ist klar geworden was ich meine. Ich möchte im Prinzip das Standardverhalten von so einem PropGrid haben und dabei möglichst keinen Code duplizieren müssen.

    Schönen Tag noch,
    Karl



  • Hast du schonmal über valarray's nachgedacht? Dort kannst du relativ elegant große Arrays elementweise vergleichen oder umrechnen.
    (aber wesentlich schneller als eine eigene Schleifenkonstruktion ist das auch nicht)



  • @CStoll: Mit einem valarray verlagert man aber das Problem, wenn ich richtig verstanden habe was der OP meint.

    Mir fällt keine gute Lösung für das Problem ein. Wenn man ehrlich ist, dann ist UI-Code in der Praxis immer häßlich, deswegen würde ich es erstmal so stricken, dass es funktioniert (also einfach den Code runterschreiben) und abwarten, ob noch ein Geistesblitz kommt.


Anmelden zum Antworten