vector.push_back leert elementen inhalt
-
jo frohes neues erstmal,...
also ich habe einen vector mit classen elementen:
class TClient .... typedef vector<TClient> tVek; int main() { ... TClient testa,testb; testa.SetName("huhu"); tVek tVec(3); tVec[0]=testa; tVec.push_back(testb); ShowVector(tVec); .... }selbst wenn ich n leeren vector nehme á la
tVek tVec; tVec.push_back(testa);jedenfalls sind nach push_back die elemente im vector leer, d.h: size ist 4, abba der inhalt von z.b. testa.GetName() ist leer,..
hilfe
:xmas2:
-
Zeig mal de Konstruktoren (Copykonstruktor).
Ist das Element voll wenn Du
TClient testc(testa);
machst ?
Wenn ja, was macht ShowVector ?
-
jo hi,.. also wenn ich
TClient test;class TClient:public CRequest_Header { public: TClient::TClient():CRequest_Header(),itsName("anonymous"){} TClient::TClient(const TClient& client):Crequest_Header(){} void TClient::SetName(const string& name) {itsName=name;} string TClient::GetName(void) const {return itsName;} private: string itsName }also ein einzelnes TClient objekt macht keine probs, zugriffe auf funktionen der basisklasse gelingt auch einwandfrei,..
TClient::TClient(const TClient& client):Crequest_Header(){}k, ist leer ,..hmmm weiß was du meinst,.. ich bastel mal schnell was rein und probiere nochmal
thx für die schnelle antwort
-
Na Du solltest kein einzelnes anlegen sondern per Kopierkonstruktor, aber den hast ja schon als leer gefunden

-
sooo ich wollte diesen jetzt füllen, habe aber nun das problem wie ich die elemente der basisklasse übertrage ..
class CRequest_Header { private: SRequest_Header itsHeader; public: struct SRequest_Header { string Host;}; CRequest_Header::CRequest_Header(),itsHeader(){} CRequest_Header::CRequest_Header(const CRequest_Header& header),itsHeader(header.GetRequest){} ... };wie muss ich das jetzt machen?? thx
-
Da ich nicht weiß, wie genau die Basisklasse aussieht, kann ich Dir das nich genau sagen. Aber sofern Du keine static Elemente o.Ä. hast, kannst Du Dir die Initialisierungsliste sparen und die Elemente einfach zuweisen (auf Zeiger achten).
-
TClient::TClient(const TClient& client):CRequest_Header(),itsName(client.GetName){}die elemente von der Basisklasse CRequested werden aber leider nicht kopiert....
-
k funzt,.. die basisklasse muss ja auch n kopierkonstruktor haben
, danke auf jedenfall hab ich was gelernt... :xmas1: