Hallo.
ich teste zZ ein wenig mit threads herum.
Später sollen Clientverbindungen die durch den Server gehalten werden, in ihren Puffer schreiben und dieser Server liest es dann aus. Aber das ist erstmal nebensächlich geworden, denn etwas recht einfaches funktioniert nicht mehr: das veränder eines einfachen string Attributes.
Im Konstruktor funktioniert es. tentry() wird zum thread erstellen aufgerufen und für dann die schleife() methode aus. so weit so gut. in der schleife() methode wird die id auch verändert, aber der buffer nicht.
in der zuweißungszeile schmiert das prog ab.
das ist für mich unverständlich, denn auf id kann schreiben zugegriffen werden und auf buffer nicht.
in meiner main erstelle ich ein Objekt und rufe dann tentry() auf.
client.h:
client.cpp:
jemand eine idee?
schonmal danke.
ich teste zZ ein wenig mit threads herum.
Später sollen Clientverbindungen die durch den Server gehalten werden, in ihren Puffer schreiben und dieser Server liest es dann aus. Aber das ist erstmal nebensächlich geworden, denn etwas recht einfaches funktioniert nicht mehr: das veränder eines einfachen string Attributes.
Im Konstruktor funktioniert es. tentry() wird zum thread erstellen aufgerufen und für dann die schleife() methode aus. so weit so gut. in der schleife() methode wird die id auch verändert, aber der buffer nicht.
in der zuweißungszeile schmiert das prog ab.
das ist für mich unverständlich, denn auf id kann schreiben zugegriffen werden und auf buffer nicht.
in meiner main erstelle ich ein Objekt und rufe dann tentry() auf.
Code:
Client* cli = new Client();
cli->tentry(&cli);
client.h:
Code:
#include <string>
#include <iostream>
class Client {
private:
static int amount;
int id;
void schleife();
public:
static void tentry(void* a);
Client();
string buffer;
virtual ~Client();
};
client.cpp:
Code:
#include "Client.h"
int Client::amount = 0;
Client::Client() {
amount++;
buffer.append("foo"); //funktioniert
}
Client::~Client() {
}
void Client::tentry(void* a) {
Client* p = static_cast <Client*> (a);
p->schleife();
}
void Client::schleife() {
char buf[10];
id = amount; //das funktioniert aber
itoa(id, buf, 10);
buffer = "foo2"; //funktioniert nicht mehr, auch per append nicht
}
jemand eine idee?
schonmal danke.