Kezdőoldal » Számítástechnika » Programozás » Ez miért nem jó? : *DogOne =...

Ez miért nem jó? : *DogOne = *DogOne;

Figyelt kérdés

Hibaüzenet:

assignment to itself.


Mi lehet a baj?


2012. szept. 18. 21:25
1 2
 1/13 anonim ***** válasza:

az, hogy saját magával akarod egyenlővé tenni, ami teljesen felesleges.


Ha *proba = 4, akkor *proba = *proba ugyan úgy 4 lesz. Nem tudom érted-e, de nem lesz semmi értelme.

2012. szept. 18. 21:36
Hasznos számodra ez a válasz?
 2/13 A kérdező kommentje:

Igen tudom de miért nem engedi a fordító?Attól még nem rossz a kód.


Az operator= épp erre az esetretartalmazza ezt a kódsort:

if this == &obj

return *this;

2012. szept. 18. 21:40
 3/13 anonim ***** válasza:
Önmagára nem mutathat valami. Nem inkább memóriát szeretnél foglalni?
2012. szept. 18. 21:48
Hasznos számodra ez a válasz?
 4/13 anonim ***** válasza:

Te nem jól írtad. A == operátor van túlterhelve, nem =.

Elméletileg így kéne kinéznie:

*DogOne == *DogOne;

2012. szept. 18. 21:50
Hasznos számodra ez a válasz?
 5/13 A kérdező kommentje:

Figyu ha megvan írva az operator=() akkor ennek jónak kéne lennie:

obj1 = obj1

majd az operator= ben megvizsgálódik,hogy a bal oldalon levő obj címe egyenlő e a jobb oldaléval ha igen nem történik értékfelülírás.


De nem fordul le a program de csak akkor nem fordul le amikor ugyanazt az objektumot akarom ugyanahhoz rendelni.

2012. szept. 18. 21:51
 6/13 A kérdező kommentje:

[link]

A 125 sorban rossz.


DogTwo objektumot hozzászeretném rendelni DogTwo hoz.

DogTwo = DogTwo; így.

De itt csak simán hibaüzenetet kapok még csak meg sem hívódik az operator=()

2012. szept. 18. 21:56
 7/13 A kérdező kommentje:
Én mindent jól írtam csak az eclipse warningnak fogta fel ha ugyanazt az objektumot akarom egymásnak rendelni.
2012. szept. 18. 22:17
 8/13 iostream ***** válasza:
Nalátod. Nem hibaüzenet, hanem WARNING. Az egészen más. Szerinted ugyan miért próbál figyelmeztetni a fordító? Tán csak nem azért, mert orbitális nagy baromság, és valószínűleg benéztél valamit, tervezési hibád van?
2012. szept. 18. 22:43
Hasznos számodra ez a válasz?
 9/13 anonim ***** válasza:

A kód alapján egyértelmű a hiba.

A *DogOne -nek eleve nincs értelme. Valaki írta "*DogOne == *DogOne" így nyilván ezt sem fogadná el a fordító.

A *DogOne azt jelenti hogy a DogOne mutató által mutatott objektum, de DogOne nem mutató. DogOne viszont mutató (de ez konstans mutató csak hogy ne legyen olyan egyszerű.)

2012. szept. 18. 23:10
Hasznos számodra ez a válasz?
 10/13 anonim ***** válasza:

"Nalátod. Nem hibaüzenet, hanem WARNING. "

Ha megnézted volna a kódot ott a *DogOne = *DogOne csillagok nékül van, az meg lehetetlen hogy lefordítsa a fordító.

2012. szept. 18. 23:14
Hasznos számodra ez a válasz?
1 2

További kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!