Szia!
On Thu, 17 Oct 2002, HIX CODER wrote:
> Felado : [Hungary]
> Temakor: VisualC++ debug miert??? ( 41 sor )
> - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>
> Sziasztok!
>
> class X
> {
> X();
> float a
> float b;
> float c;
> }
>
> a mainframe osztályomnak van egy példánya ebbõl
> X xEgyPeldanya;
>
> namost ott kezdõdnek a gondok hogy X konstruktorában lenullázom a,b,c
> változóka t ez ugye ugy néz ki, hogy amikor létrehozom a mainframe
> class egy példányát mielõtt a mainframe konstruktora lefutna, lefut X
> konstruktora (ugye ami mainfr ame.xEgyPeldanya.X() ) ez szepen
> lenullazza mainframe.xEgyPeldanya.a = 0 ... a többit is. Eddig minden
> jo viszont ezekután lefut a mainframe konstruktora is és az elsõ két
> változót (a, b-t) xEgyPeldanya-ban elqrja vmi egészen érdekes értékre.
> Ja és mindezt csak debug modban csinálja, h a release beállitásokkal
> forditok akkor semmi baja. Ugyhogy most ugy tudok debugo lni hogy van
> egy #ifdef _DEBUG és mainframe konstruktora után lenullázom mégegyszer
> a változókat
Nekem van egy tippem. A figyelmetlenseg emberi tulajdonsag. A coderek is
figyelmetlenek, raadasul ok allandoan faradtak is, mert sohasem pihenik ki
magukat, hiszen mindig kodolnak.
Ebbol fakadhat olyan hiba is, amit mar en is elkovettem, de miutan aludtam
egyet rajottem. Lehet, hogy az X konstruktora nalad igy nez ki?:
X::X () {
float a = 0;
float b = 0;
float c = 0;
}
Ha nem aludt az ember, atsiklik az ilyen folott. Mi is tortenik itt?
Lokalis valtozoval feluldefinialom az X tagvaltozoit. Azoknak erteket
adok, mig az objektum attributumai inicializalatlanok maradnak.
Debuggerben faradt embernek nem feltuno a dolog, a,b,c-nek van erteke.
Amint kilep a konstruktor torzsebol a vezerles, az ideiglenesen lefoglalt
lokalis valtozok felszabadulnak. A X objektumon beluli attrib-ok pedig az
addigi inicializalatlan ertekuket (valami zagyvasag) tartalmazzak.
> . Tulajdonképpen nem történik semmi ojan ami miatt ne tudnék bármit
> is elvégezni,
> csak rohadtul idegesit hogy mirét csinálhat valami ilyet. Persze
> lehet hogy nekem va nnak nagy tudásbeli hiányosságaim és azért nem
> értem a dolgot. Ha valkinek van valami ötl ete akkor világositson fel
> legyenszíves hogy mitõl van az ilyen.
A kodolasnal nem szabad idegesnek lenni. Es lehetoleg mindig frissnek kell
lenni. Mondom en :). Sajnos _mindig_ a szamitogepnek van igaza. Ez eleg
megalazo tud lenni.
Probald meg bekapcsolni az osszes warningot. A VC++ fordito altalaban tud
figyelmeztetni, ha valami valtozot nem inicializalsz.
Udv!
--
tocsa
---
| email: |
| homepage: http://www.inf.bme.hu/~tocsa |
---
|
Pr_152 irta:
>Van vkinek esetleg ilyen programresz keszen, illetve tud valaki
>segiteni, hogy hogy kell csinalni ilyet?
Amennyiben egy kesz progi kell, olyan van. Kereskedelmi termek ugyan, de
nem veszes az ara.
Nezd meg a www.rockysoft.tk cimen a Szoftverfejlesztes alatt. Ha
erdekel, irj! Az arat megbeszeljuk.
Szamlat adok rola.
Ha sajat progit szeretnel irni, akkor tudok javasolni nehany Delphi
komponenst, azok kozul erdemes valogatni, ill. Pascalban irtam anno egy
unitot, ami soros portot kezel, annak a segitsegevel mar nem nehez egyet
irni. Az a hatranya a DOS-os proginak, hogy Win alol nem biztos hogy
megy. (A Windowsnal verziotol fugg, hogy hogyan kezeli a portokat. Mas
9x alatt es mas NT/2000 alatt. A D. komponensek elonye az, hogy attol
fuggoen kezeli a portot, hogy milyen Wint hasznalsz, igy ezt a problemat
nem is eszleled.)
Rocky
________________________________________________
http://mailbox.hu - Már SMS értesítéssel is!
|