statische Funktionen



  • Hallo, könnt ihr mir vielleicht kurz helfen?

    Es geht um statische Methoden:

    wie genau muss ich eine statische Methode in meinen *.h und *.cpp definieren bzw. deklarieren?

    Meine Process.h

    class Process
    {
    public:
    static void processAlgorithm();
    
    };
    

    Meine Process.cpp

    static void Process::processAlgorithm(std::string _filepath){	
    	std::cout <<"Process" << std::endl;
    }
    

    Wenn ich dies auf diese Art implementiere bekomme ich immer die Fehlermeldung:
    candidate is static void Process::processAlgorithm()

    Ich brauche diese static Methode da ich ja keine Instanz meiner Classe erzeugen möchte.



  • redbomber schrieb:

    Meine Process.cpp

    static void Process::processAlgorithm(std::string _filepath){	
    	std::cout <<"Process" << std::endl;
    }
    

    Das static gehört nicht an diese Stelle, sondern nur in die Deklaration der Klasse. Ebenso bei z.B. virtual.



  • halt, halt, halt
    das meinte ich garnicht, sorry. Der Parameter hatte ja noch gefehlt.

    SORRY!!

    Also:
    Meine Process.h

    class Process
    {
    public:
    static void processAlgorithm();
    //void readFile(std::string);
    
    };
    

    Meine Process.cpp

    #include "Process.h"
    
    static void Process::processAlgorithm(){
    
    	std::cout <<"Process" << std::endl;
    
    }
    

    Und der Fehler ist: Cannot declare Member function..

    Wie bitte soll dann eine statische Methode in der *.cpp definiert werden?



  • super! Vielen Dank.



  • Wenn ich jetzt aber solch eine statische Methode verwende, dann hab ich doch den Nachteil, dass ich keine Objekte (von anderen Klassen) in dem Header Deklarieren kann, bzw. diese statisch deklariert werden müssen.

    Ich möchte die Objekte im Header Deklarieren, damit sie mir als globale Objekte zur Verfügung stehen.

    Wenn diese nun statisch sind, besitzte ich ja von jedem Objekt nur eine Instanz.

    Kann ich die Werte in einem solchen Objekt aber später trotzdem noch ändern, also auch wenn dieses statisch ist, oder müssen in einem statischem Objekt auch alle Datentypen statisch deklariert werden?



  • Was du redest, ist ziemlich wirr. Ich kann dein Problem nicht ganz nachvollziehen.

    Variablen der Speicherklasse static bleiben bis zum Beenden des Programms erhalten. In Klassen deklarierte statische Variablen sind von erstellten Objekten unabhängig. Jedoch können sie wie normale Variablen verändert werden. Vielleicht solltest du dich noch genauer über static informieren.


Anmelden zum Antworten