Zeiger auf CFtpConnection



  • Hallo, ich bekomme von GetFtpConnection einen Zeiger auf CFtpConnection.

    CFtpConnection *connection;
    connection = session.GetFtpConnection(pstrServer, login, passwd, port, bPassive
    

    Diese Funktion ist in einer Klasse implementiert. Wie bekomme ich das hin, dass der Zeíger auch für Funktionen von anderen Klassen verfügbar ist. Am liebsten wäre mir so etwas wie eine globale Variable. Habe leider noch nicht rausgefunden wie. Ist das in C++ möglich?



  • in deiner FtpConnection-Klasse einen static-member der aktuellen Verbindung speichern

    GetFtpConnection gibt die Verbindung also nicht nur zurück, sondern speichert sie auch zwischen.
    Über eine static-Methode (meinetwegen ::getLastConnection() ) kannst du diese dann überall abfragen, wenn du sie brauchst



  • Durch den Ansatz legst du dich aber auf eine einzige mögliche Verbindung fest.
    Vllt. willst du ja mal mehrere Verbindungen gleichzeitig verwalten.
    Da bietet sich an, die Connections in eine
    static std::map<std::string, CFtpConnection>*
    zu speichern.
    Dann gib der Session::GetFtpConnection noch einen letzten Parameter >> const std::string& name="defaultConnection" << mit, der dir dann die entsprechende Connection liefert.
    Evtl. willst du dann auch noch ne passende Methode "removeFtpConnection( const std::string& name)".

    Grüße
    Franz



  • Nabend, ich werde es erst mal mit einer Verbindung versuchen. Würde es denn so funktionieren? habe gerade leider nicht den Compiler 😞
    cpp-Datei von Connect:

    Connect::Connect(void)
    {
    	static CFtpConnection *connection_pointer;
    .
    .
    .
    if(connection = session.GetFtpConnection(pstrServer, login, passwd, port, bPassive)) 
    			{
    			cout << "Verbindung wurde aufgebaut\n";
    			connection_pointer=connection;
    
    			}
    }
    CFtpConnection * Connect::getLastConnection()
    {
     return connection_pointer;
    }
    

    In Header-Datei von Connect:

    #pragma once
    #include <afx.h>
    #include <afxwin.h>
    #include <afxinet.h>
    #include <stdio.h>
    class Connect
    {
    public:
    	Connect(void);
            static CFtpConnection * Connect::getLastConnection();
    public:
    	~Connect(void);
    };
    

Anmelden zum Antworten