Zeiger auf CFtpConnection-Objekt
-
Hallo,
ich bekomme in einer Funktion von einer Klasse einen Zeiger auf CFtpConnection-Objekt. Ich möchte diesen Zeiger auch in anderen Klassen verwenden.Connect::Connect(void) { if(connection = session.GetFtpConnection(pstrServer, LeseListe.servername, LeseListe.password, port, bPassive)) { cout << "Verbindung wurde aufgebaut\n"; connection_pointer=connection; } }Das GetFtpConnection Objekt wird ja nur lokal erzeugt. Wie kriege ich das hin, das ich den Zeiger mit dem Objekt auch in anderen Klassen verwenden kann?
-
Na du mußt doch nur sehen, das alle den zugriff auf den zeiger haben, wobei das gefährlich is, da nicht fest steht ob der Zeiger noch gültig is, Besser ist es eine Klasse zu erstellen und alle greifen auf die klasse über entsprechende Funtionen zu.
Gruß Matthias
-
Klasse zu erstellen
Dann wäre meine Klasse Connect doch schon richtig?
alle greifen auf die klasse über entsprechende Funtionen zu
Dann brauche ich in der Klasse Connect brauche ich dann ja eine Ausgabefunktion. Wie stelle ich das denn an?

-
na erstell doch deine Klasse Connect in der Klasse wo der Main-Aufruf ist(im Allgemeinen CxxxApp), darauf kann doch jeder mit ::AfxGetApp() und einen entsprechenden static_cast zugreifen, die Ausgabe und oder Weiterverarbeitung der Daten kann doch dann jede Klasse die auf die Klasse Connect zugreift selber machen.
Gruß
-
Hallo, erst mal danke für die Antwort. Leider habe ich die Antwort noch nicht ganz verstanden.

erstell doch deine Klasse Connect in der Klasse wo der Main-Aufruf ist
Meintest du, dass ich die Klasse Connect von der Klasse, wo der Main-Aufruf ist, ableiten soll? Oder wie war das gemeint?
-
ne du sollst die Klasse Connect als member deiner CxxxApp Klasse erstellen
gruß
-
Nabend,
bin mir nicht so ganz sicher mit der Klasse mit Main-Aufruf. Ist das so richtig von mir gedacht? Wie komme ich denn dann an den Zeiger für die Verbindung?
Das habe ich auch noch nicht ganz verstanden:::AfxGetApp() und einen entsprechenden static_cast zugreifen
// Main.h: Schnittstelle für die Klasse CMain. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_MAIN_H__27C7F38B_A785_4676_A25D_D10DB4CFB65B__INCLUDED_) #define AFX_MAIN_H__27C7F38B_A785_4676_A25D_D10DB4CFB65B__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "FlaechenListe.h" class CMain { public: CMain(); virtual ~CMain(); class CConnect { void get_connection(void) { CInternetSession session((_T("My FTP Session")),1, INTERNET_OPEN_TYPE_PROXY ,(_T( "beispiel.proxy")), NULL, 0); //Zeiger auf CFtpConnection CFtpConnection *connection; if(connection = session.GetFtpConnection(pstrServer, login, passwd, port, bPassive)) { cout << "Verbindung wurde aufgebaut"; } } } CConnect verbindung; }; #endif // !defined(AFX_MAIN_H__27C7F38B_A785_4676_A25D_D10DB4CFB65B__INCLUDED_
-
Wenn du nicht weisst was OOP und Klassenhirarchie ist, dann schau dich doch mal nach einem Tutorial um. Ich habe geschrieben du sollst die Klasse Connect erstellen und einmen Member in deiner Klasse CMain machen, Also im einfachsten Falle so:
Main.hclass CConnect { CConnect(....); GetConnect(); Send(...);//nur als beispiel Recieve(); } class CMain { CMain(); CConnect Connect; }und drauf zu greife kannste mit static_cast<CMain>::AfxGetApp()->Connect->Send() als Beispiel
Gruß und schluß