Problem mit statischer Elementfunktion



  • hallo leute

    ich hab mal ne frage und zwar hab ich eine templatefunktion, die immer wieder aufgerufen wird. nun möchte ich beim ersten aufruf bestimmte werte in einer globalen klassenvariable hinterlegen und dann später immer wieder drauf zugreifen. im prinzip ist das ja alles ganz nett, bloß bekomm ich dann immer die fehlermeldung

    Fehler: ungültige Verwendung des Elementes »Foam::extendedUpwindCellToFaceStencilR::randbed_ini« in statischer Elementfunktion

    woran liegt das? warum kann ich nicht darauf zugreifen und wie würds besser funktionieren?

    merci



  • Du hast etwas falsch gemacht. Wenn du genaueres wissen willst, wirst du wohl übersetzbaren und den Fehler reproduzierenden Code präsentieren müssen.



  • Was soll denn eine globale Klassenvariable sein? Ist das Attribut auch statisch oder was machst Du für unflätige Dinge mit dem armen Ding?

    Ansonsten stimme ich manni66 zu.



  • hm vermut ich auch 😉
    was templates angeht kenn ich mich leider nicht so unbedingt aus. Also
    meine Klasse

    class extendedUpwindCellToFaceStencilR
    :
        public extendedCellToFaceStencil
    {
    
    bool randbed_ini;
    
    ...
    public:
         extendedUpwindCellToFaceStencilR
            (
                const cellToFaceStencil&
            );
    
    ...
    
    template<class Type>
       tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > weightedSum
       (
           const GeometricField<Type, fvPatchField, volMesh>& fld
       ) const;
    }
    

    randbed_ini ist die variable, die ich beispielsweise beschreiben möchte. das ganz soll in der funktion weightedSum passieren, da je nach Wahl des template-arguments die Belegung erfolgt. und da tritt dann immer der fehler auf...

    ich hoffe, dass mein problem bzw. was ich programmieren will so klar ist.



  • Wieso postest Du die Methode nicht?

    Wenn diese Methode statisch ist, kann sie nicht auf die Instanzvariable zugreifen, weil diese nicht statisch ist, wie ich vermutet habe.

    Verstehst Du, wieso? Statische Methoden sind der Klasse selbst zugeordnet, nicht den Instanzen. Einen nicht-statische Methode oder Variable ist aber einer bestimmten Instanz zugeordnet. Wenn Du Dich in einer statischen Methode befindest, hast Du aber mit keiner Instanz zu tun und kannst daher auch nicht auf diese Variable zugreifen.



  • hm ok. also so grob hab ichs verstanden.
    habs jetzt gaanz einfach hinbekommen mit einer static variable in der funktion.

    danke für die hinweise


Anmelden zum Antworten