[c++]sträng som försvinner helt mystiskt

Permalänk
Medlem

[c++]sträng som försvinner helt mystiskt

Hej!
Har stött på ett problem som ajg inte förstår riktigt.
Det är nämligen så att jag försöker skapa ett nytt objekt, först skickar jag informationen till en add funktion,
där utförs en expansion av arrayen om nödvändigt, sen så skickas samma info som skickad till funktionen vidare till konstruktorn.
Problemet är när jag försöker skriva ut arrayens innehåll så visas allt (ints, doubles etc) förutom en sträng som presenteras som " " tom.

Så då tänkte jag det det blir kanske fel vid inmatningen eller nånstans på vägen så jag la en breakpoint först vid add funktionen för att se vad som kommer med, då är allt som det ska.
Sen så la jag en breakpoint på den raden där "this->sträng=sträng" och då ser jag att det inte finns nåt i min sträng att den är tom.

Vad tror ni det beror på?

mvh Ogward

Permalänk
Medlem

steppa ifrån där du lägger till den tills din this->sträng=sträng och se vart dne försvinner. och sträng är väl inte så bra namn? undvik åäö

Visa signatur

Laptop - MacBook 2.0GHz, 4GB ram, Intel GMA 950
Stationär - i5 3570k @ 4ghz, 8gb ram, 120gb ssd + 2tb hdd, Windows 8 64bit, fractal design arc
Citera så jag hittar tillbaka :)

Permalänk
Medlem

ok, jag ska se vart den försvinner.
det var bara ett ex. har alltid mina "variabler" på engelska så i detta fallet är det this->userName=userName;

userName är till ex Peter Hammar så det är separerat av space, men det bör väl inte ha nåt med det o göra?
tack för tipset!

Permalänk
Medlem

aha okej. men nja det borde inte spela någon roll. det är inte stacken som tar slut? allokerar du med pekare eller vanligt?

Visa signatur

Laptop - MacBook 2.0GHz, 4GB ram, Intel GMA 950
Stationär - i5 3570k @ 4ghz, 8gb ram, 120gb ssd + 2tb hdd, Windows 8 64bit, fractal design arc
Citera så jag hittar tillbaka :)

Permalänk
Medlem

vad menar du med att stacken tar slut? har en array med pekare dvs Random**random

Permalänk
Medlem

Hej !
Det vore mycket lättare att förstå vad du menade om du kunde kopiera in den biten av din kod som strular.

Skrivet av Z3R0:

Det är nämligen så att jag försöker skapa ett nytt objekt, först skickar jag informationen till en add funktion,

Vilken information ? vilken add funktion, en medlemsfunktion i objektet ?

Skrivet av Z3R0:

där utförs en expansion av arrayen om nödvändigt, sen så skickas samma info som skickad till funktionen vidare till konstruktorn.

Vilken array ? Vilken konstruktor, för vilken klass ?

Det blir, iallfall för mig, för svårt att förstå vad du menar, så att klippa in kodsnutten är nog enklare.

Visa signatur

Namn : Jesper | Ålder : 45 | In-game namn : iller
Yrke : Matematisk modellerare (finansiell matematik), mjukvaruutvecklare för risksystem.
Utbildning : Doktor i matematik + en del mat-stat, numme och IT-relaterat.

Permalänk
Medlem

när jag sätter en breakpoint i början av konstruktorn så ser jag att userName har det jag skrivit, sen så trycker jag på continue och den stannar vid min andra breakpoint som är vid this->userName=userName;
och där är userName tomt av nån anledning så jag vet inte vad jag ska göra mer...

Permalänk
Medlem

konstruktor

Diet::Diet(string name,int kcal,double protein,double carb,double lipid,string UserName, string date) { this->date=date; this->name=name; this->kcal=kcal; this->protein=protein; this->carb=carb; this->lipid=lipid; this->userName=userName; }

add funktion med expansion

void DH::addEaten(string userName,string date,string name, int kcal, double protein, double carb, double lipid) { if(this->capacity==this->nrOfDiets) { this->capacity+=4; Diet**temp=new Diet*[this->capacity]; for(int i=0;i<this->capacity;i++) { temp[i]=NULL; } for(int i=0;i<this->nrOfDiets;i++) { temp[i]=this->dh[i]; } delete [] this->dh; this->dh=temp; temp=NULL; } this->dh[this->nrOfDiets++]=new Diet(name,kcal,protein,carb,lipid,userName,date); }

Om du vill se hela "Diet" klassen säg till så pastar jag, ville bara inte översvämma tråden med en massa urklippt kod.

tack på förhand!

Permalänk
Medlem
Skrivet av Z3R0:

konstruktor

Diet::Diet(string name,int kcal,double protein,double carb,double lipid,string UserName, string date) { this->date=date; this->name=name; this->kcal=kcal; this->protein=protein; this->carb=carb; this->lipid=lipid; this->userName=userName; }

Detta borde bli fel.

UserName != userName

Visa signatur

orka

Permalänk
Medlem

Använd gärna initieringslistor, smidigare.

Diet::Diet(string name,int kcal,double protein,double carb,double lipid,string UserName, string date) : date(date), name(name), kcal(kcal).. etc { }

Då kan du också ha samma namn på parametrar och medlemsvariabler (utan att använda this).

Visa signatur

| Antec P183 | AMD Phenom 2 940 | Corsair XMS2 DDR2 8192 MB | XFX HD4870 | Gigabyte MA-790X-UD3P | Corsair VX 450W | Primärt OS: Arch Linux | Windows 7 x64 |

Permalänk
Medlem

fan va pinsamt...
Hatar när det blir såhär debuggar, läser funktionerna , ändrar i koden men ser inte det simpla felet...
3 par ögon ser mer än ett.

tack för hjälpen!