Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  c++ & new/delete vs factory märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
tanzanite
HV kasutaja
tanzanite

liitunud: 13.05.2006




sõnum 08.06.2008 17:54:30 c++ & new/delete vs factory vasta tsitaadiga

Probleem selline: vaja tagada objecti "h2vitamine" igasuguste yllatuste (exception, uups, etc) korral ...

A)
new / delete oleks suurep2rane - kuid mul on vaja, et new ei looks uusi objecte vaid tagastaks objekte ainult yhest eelloodud setist ja delete tagastaks need (ilma tegelikult h2vitamata).

Siin aga v2ike probleem - peale new operaatorit lykatakse j2rgmisena k2ima objecti konstructor ... see ei l2he mitte (object oli juba loodud ja mitte just kergekaaluline).

Kui konstruktori/destruktori kutsumisest/effektist kuidagi lahti saaks oleks super ... ega vist pole v6imalik ?
example:

...
class A : ... { ... }
class B : public A {
private:
  static B list[...];
public:
  B() : A(4096) {} // seda new korral ei v6i kasutada / teostada x_x
  void *operator new (...) { return &list[...]; }
  void operator delete (...) { ... }
}


B)
kasutan mingit wrapper objecti mis vahendab liiklust tegeliku objecti vahet ... mis on t6sine porno (yle 50 operaatori ja funktsiooni ning see laieneb pidevalt)

See t88tab (proovinud veel pole - liiga porno) aga ei istu mulle see variant ... :/

C)
Is there an option c ... like C4?

D)
bastardiseeritud A + B : wrapper klass jagab tegelikku objekti mida saab siis edaspidi inimesekombel kasutada ja wrapper ise lihtsalt m2daneb stackis kuni wrapperi h2vitamiseni. icon_rolleyes.gif

ideas? options?
tagasi üles
vaata kasutaja infot saada privaatsõnum
troglodyte
Kreisi kasutaja
troglodyte

liitunud: 09.08.2002




sõnum 08.06.2008 19:17:49 vasta tsitaadiga

Sa ei pea dubleerima reaalse objekti kogu interface-i wrapper klassi. C++-s on ju võimalik operator overloadingu abil igasugu trikke teha, sealhulgas ka -> overloadida.
Näiteks võiksid kasutada boost c++ teegist scoped_ptr klassi.
Kommentaarid: 34 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
tanzanite
HV kasutaja
tanzanite

liitunud: 13.05.2006




sõnum 08.06.2008 21:56:43 vasta tsitaadiga

Hm ... pole paha m6te (miks ma ise küll selle peale ei tulnud). Mitte perfektne, but then again - what is :/

Nimelt k2ib enamus suhtlusest objectiga l2bi operaatorite - extra dereference teeb niigi kirju operaatoripudru veelgi kirjumaks. Samas on see seni parim idee ja peaks olema piisav - vaatan / katsetan.

Igaljuhul t2nud!
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  c++ & new/delete vs factory
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.