nul
20-10-2005, 23:16
Ich schreib mir gerade an einer Methode, die mir einen Client akzeptiert und eine Struktur auf gewisse Daten zuruecklifern soll. Und zwar sieht das so aus:
const client_str*
Connection::accept_client()
{
client_str client_addr;
socklen_t len = sizeof( client_addr.cli_addr );
struct sockaddr* ca = (struct sockaddr*)&client_addr.cli_addr;
client_addr.client = accept( this->server_socket, ca, &len );
if ( client_addr.client == -1 )
{
std::cerr << "Error accepting client!" << std::endl
<< this->class_error << "accept_client()" << std::endl;
return NULL;
}
else
{
return &client_addr;
}
}
Nun ist ja die Variable client_addr lokal. Kann ich das irgendwie verhindern, dass die Variable spaeter auch ausserhalb der Methode sichtbar ist. Soviel ich weis werden in einer Methode angelegte Variablen ja nach der Ausfuehrung der Methode geloescht.
Eine Klassenvariable moechte ich nicht unbedingt anlegen, dehalb, hat jemand vielleicht eine Idee .....
Bin wie immer fuer jeden Tipp und anregenden Gedanken dankbar!
mfg
const client_str*
Connection::accept_client()
{
client_str client_addr;
socklen_t len = sizeof( client_addr.cli_addr );
struct sockaddr* ca = (struct sockaddr*)&client_addr.cli_addr;
client_addr.client = accept( this->server_socket, ca, &len );
if ( client_addr.client == -1 )
{
std::cerr << "Error accepting client!" << std::endl
<< this->class_error << "accept_client()" << std::endl;
return NULL;
}
else
{
return &client_addr;
}
}
Nun ist ja die Variable client_addr lokal. Kann ich das irgendwie verhindern, dass die Variable spaeter auch ausserhalb der Methode sichtbar ist. Soviel ich weis werden in einer Methode angelegte Variablen ja nach der Ausfuehrung der Methode geloescht.
Eine Klassenvariable moechte ich nicht unbedingt anlegen, dehalb, hat jemand vielleicht eine Idee .....
Bin wie immer fuer jeden Tipp und anregenden Gedanken dankbar!
mfg