Funktion einer Klasse ohne Objekt aufrufen



  • Hallo zusammen,

    ich habe eine Klasse, in der eine Funktion eine Datei öffnet, diese Ausliest und ein vector<string> zurückgibt.

    Ich möchte diese Funktion jetzt gerne in einer allgemeinen Funktion verwenden. Natürlich könnte ich diese Funktion nochmals erstellen aber das wäre ja dann auch etwas unkomod, wenn man die Funktion ja eigentlich schon hat.

    Beispiel:

    class A
    {
        .
        .
    
        public:
    
             std::vector<string> openFile
             (
                 const std::string&
             );
    };
    
    std::vector<string> A::openFile
    (
        const std::string& fileName
    )
    {
    
        return ...;
    }
    

    Und in einer willkürlichen Funktion würde ich diese Funktion gerne aufrufen/benutzen:

    void testFunction
    (
        const std::string& fileName
    )
    {
        //- open file
        std::vector<string> fileContent = A::openFile(fileName);
    
        for(unsigned int i=0; i<fileContent.size(); i++)
        {
            std::cout << "Dateizeile " << i << ": " << fileContent[i] << "\n";
        }
    }
    

    Allerdings ist es ja klar, dass das ohne Objekt nicht geht. Ich hab aber im Hinterkopf, dass ich Funktionen von Klassen auch ohne Objekt aufrufen kann, wenn ich keine Klasseninternen Datenzugriffe habe. Vllt lieg ich auch falsch 🙂

    Der Aufruf wäre dann iwie so:

    int main()
    {
        std::string fileName = "pfad/zur/Datei"
    
        testFunction(fileName);
    
        return 0;
    }
    

    Wäre für ne Rückmeldung dankbar.
    Danke schonmal fürs durchlesen,

    Grüße Tobi



  • Hallo zusammen,

    ich hab die Antwort gerade gefunden und zwar (wie ihr sicher alle wisst), muss ich Funktion in der Klasse als static definieren:

    static std::vector<string> openFile
         (
             const std::string&
         );
    

    Danke und verzeiht mir diesen Thread 😞



  • Falsches Unterforum...

    Hier ist das C++/CLI Unterforum: Da geht es um C++/CLI, eine .NET Sprache (oder deren einziger Zweck, die Interoperabilität zu C++). Das korrekte Unterforum ist C++ (alle ISO-Standards).



  • Hallo Theta,

    danke für den Hinweis.
    Falls ein Moderator die Rechte zum Verschieben hat, bitte verschieben.


Log in to reply