Zugriff auf Vector einer Klasse mit Aufruf einer Methode



  • Hi zusammen,

    Ich würde gerne eine Methode aufrufen, sobald Daten eines Vectors in einer Klasse geändert werden.

    Mit

    __property  int RowCount = {read=_RowCount,write=SetRows};
    

    funzt das auch ganz gut.

    Jetzt würde ich das ganze auch gern mit dem Vector machen.

    public:
    		vector<vector<AnsiString> > Cells;
    

    Wenn es Alternativen gibt, damit ich mitbekomme, sobald im vector Daten verändert werden, nehme ich die auch gern!

    THX



  • Du kannst auch indizierte Properties definieren.

    Ungetestet:

    #include <vector>
    
    class MyClass
    {
       std::vector<std::vector<int> > Cells_;
    
    public:
       __property int Cells[unsigned int][unsigned int] = { read=get_cell, write=set_cell };
    
    private:
       int get_cell( unsigned int Row, unsigned int Col ) const
       {
          return Cells_[Row][Col];
       }
    
       void set_cell( unsigned int Row, unsigned int Col, int Value )
       {
          Cells_[Row][Col] = Value;
       }
    };
    

    Edit:
    Fehlenden Rückgabetyp für __property Definition ergänzt



  • Supi, funzt mit int ganz gut!

    Aber ich bekomme Ärger mit:

    std::vector<std::vector<AnsiString> > Cells_;
    __property AnsiString mmCells[int Row][int Col] = { read=get_cell, write=set_cell };
    

    Error: E2347

    Gibts für unterschiedliche parameter ->int in AnsiString->raus auch eine Lösung?



  • Hatte leichtsinnsfehler gemacht! 😮

    Funzt supi, THX 👍


Anmelden zum Antworten