Kezdőlap › Fórumok › Programozás › C++ kérdések
- This topic has 119 hozzászólás, 19 résztvevő, and was last updated 18 years, 8 months telt el by
tovis.
-
SzerzőBejegyzés
-
2005-07-24-09:15 #2023668
A c++-nak van néhány kellemetlen korlátja.
Pl.: amíg nem tültöd be az objektumot, addig nem is létezik (kiv. ha statikus).
(2005-07-28-06:09 #2023669Copykonstruktorod van? Sztem azzal kiküszöbölhetõ lenne a probléma …
2005-07-28-06:28 #2023670Pont ezt akartam javasolni én is. 😀
Különben nem próbáltam ki, hogy a copyconstructor használata esetén meghívódik-e az alap konstruktor, de majd talán este megnézem.
Ha nem, akkor pl lehetne egy jelzõ bitet harcba állítani, ami jelzi, hogy lefutott-e az alap inicializálás. Ha nem, akkor meghívod a megfelelõ rutinokat, majd átállítod a bitet pl.
Persze ismerni kellene a forrást, további okoskodáshoz 🙂 .2005-08-08-19:32 #2023671Hm…. kösz a segítséget, de elegem lett az operátorokból… 🙂
Inkább megoldom fgv-kkel, nem érdekel.Viszont lenne egy újabb kérdésem is, bár kissé offtopik ebben a témában:
szerk: nah picit megszerkesztettem a téma címét, mostmár nem offtopik… 😛
Szeretnék a progimhoz egy testreszabható kis saját készítésû loggert készíteni.
Felmerült bennem pár kérdés…. pl:1) Csinálhatnék singleton osztályt, benne vmi iesmi fgv-vel:
Code:void log( std::string txt );Ennek van pár hátránya: szeretném használni pár objektum << operátorát. (amivel maga az objektum kiírja saját magát egy ostream-ba) 2) Tehát a progin belül vmi iesmi használatot szeretnék:
Code:logger log( „fajlneve” );
// vagy esetleg: logger log; => ekkor cout-ra loggolAkarmiObjektum o;
//…
log << "Naplózzuk ezt az objektumot: " << o;Ehhez viszont nem ártana, ha a logger osztály örököl az ostream osztályból, ha jól sejtem. (Mivel az operator<< metódusok ostream objektumokkal dolgoznak.) Viszont ez esetben nem ártana tudni, hogy az ostream osztályból hogy is kéne örökölni?
Illetve úgy általában a fent mutatott használathoz miket kéne felülírni az ostream osztályban, etc…Megnéztem az ostream kódját, de nem sokat fogtam fel belõle így elsõre…. ezért kérek vmiféle ötletet.
Tehát lényegében egy saját kis testreszabható, illetve változtatható célpontú streamobjektum létrehozását szeretném megvalósítani, és naon rég c++oztam szal egyelõre nem vagyok benne a dolgokban sajna…
Kösz elõre is minden segítséget…
kl223
2005-08-08-19:59 #2023672Copykonstruktorod van? Sztem azzal kiküszöbölhetõ lenne a probléma …
[align=right][snapback]143004[/snapback][/align]Hm. Nem annyira vok jártas cppben. Hogy is néz ez ki?
Mert egy ienre:Code:class akarmi {
public:
akarmi( akarmi _src );
};azt írja, hogy szabálytalan, és szerinte inkább ezt akartam írni:
Code:akarmi( akarmi &_src );ez utóbbi viszont nem hajtódik végre mint copy konstruktor vagy mifene… nemtom… volt ott mindig pár error. Nyilván, ez ugye az cím szerinti átadás, nem ugyanaz.
Vélemény?
2005-08-08-20:02 #2023673„Szvsz elég kellemetlen. Kérdésem a következõ: van rá vmi mód, hogy érzékeljük, ha egy változó még inicializálatlan?”
Ez nem jó út mert az inicializálatlan változó nem más mint egy lyuk a programban:
0000:ugras a 00FF cimre00FF:program_tovabbi_resz
Közötte meg a változó. Ami jó esetben 0-val van feltöltve (de még ez sem biztos…ha dinamikus).
[align=right][snapback]142408[/snapback][/align]hja, ezt tudtam. erre épülnek a buffer overflow-típusú exploitok.
kl223
2005-08-11-08:34 #2023674Szerintem nem kell neked itt származtatgatnod az ostream-bõl 🙂
A c++ engedi a különbözõ operátorok túlterhelését, így a << operátort is, ami azért valljuk be, elég hasznos tud lenni ( Javában ezt nagyon hiányolom 🙁 ). Viszont ha nem tudod a szignatúráját, akkor célravezetõbb lenne egy sima "log" mûveletet írni a szükséges objektumokra.
2005-08-11-15:01 #2023675Szerintem nem kell neked itt származtatgatnod az ostream-bõl 🙂
A c++ engedi a különbözõ operátorok túlterhelését, így a << operátort is, ami azért valljuk be, elég hasznos tud lenni ( Javában ezt nagyon hiányolom :-( ). Viszont ha nem tudod a szignatúráját, akkor célravezetõbb lenne egy sima "log" mûveletet írni a szükséges objektumokra.
[align=right][snapback]144948[/snapback][/align]Naigen. Nade hogy néz ez ki? 😉
Bár mind1, valszeg úgy lesz megoldva, meg singletonnal…
csak majd picit felfejlesztem. (pl loggolás több helyre, etc)Javában az operátorok felüldefiniálása hiányzik naon, bár ha az ember megszokja ezeket az isEquals meg charAt, meg hasonló mûveleteket, utána nem oan zavaró. Az 1 dolog, hogy így elsõ ránézésre is érti az emberfia, mit is csinálok…
kl223
2005-10-18-10:58 #2023676kl223 wrote:Mert egy ienre:Code:class akarmi {
public:
akarmi( akarmi _src );
};azt írja, hogy szabálytalan, és szerinte inkább ezt akartam írni:
Code:akarmi( akarmi &_src );ez utóbbi viszont nem hajtódik végre mint copy konstruktor vagy mifene… nemtom… volt ott mindig pár error. Nyilván, ez ugye az cím szerinti átadás, nem ugyanaz.
Vélemény?
2005-10-18-13:24 #2023677Code:class akarmi {
public:
akarmi( akarmi _src );
};Eleve nem jöhet létre, hiszen a definiáláskor még nem létezik az objektum a létrehozásakor pedig ismerni kéne a fordítónak a méretet. Ami jelen esetben, mivel végtelen nem lehet, elõbb utóbb a maximálissal lesz egyenlõ, de meghatározhatatlan.
Helyesen:
Code:class akarmi {
public:
akarmi( );
akarmi( akarmi& );
akarmi( const akarmi& );
}; -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz