Kezdőlap › Fórumok › Programozás › C++ probléma
- This topic has 12 hozzászólás, 3 résztvevő, and was last updated 17 years, 8 months telt el by
pointux.
-
SzerzőBejegyzés
-
2007-11-07-17:21 #2139162
„Mind igaz, de a konkrét példa nem tartalmaz sablont, így számomra nem volt lényeges a fenti probléma. Mivel a 3D-s alkalmazások 99,9%-a nem használ mást csak a float típust koordináták esetében, nincs is értelme sablonként megvalósítani a v3d osztályt.”
Ez csak egy példa volt, ami épp eszembe jutott (csak azért mert csináltam ehhez hasonlót sablonnal).
v3d = float * v3d ugyanúgy nem fog működni.„Szerintem meg a legpraktikusabb a D nyelv garbage collector képességének használata. 🙂 Így a kódot sem kell különösebben portolni.”
Nem tudom, hogy hogy működik, de pl. a java féle gc, az oly áhitattal említett gyors memória-kezelése miatt memória zabáló. Persze okosan megoldották, mivel a júzer felé az elvileg foglalt memóriát mutatja, közben a megengedett kereteken belül megeszi a gép erőforrásait.
A ref. pointert meg azért tartom praktikusnak, mert pont akkor és csakis akkor szabadít fel, amikor tényleg nincs rá szükség. És a delete parancsot soha nem kell kiadni. A használat meg ugyanaz. A definiálás meg ennyi:
refptr class ( Class ( … ) )
a
Class * class = new Class (…) + delete class helyett.
(Bár elvileg a new-t is át lehet definiálni… és akkor meg ugyanaz, kiv., hogy nem kell delete. :))„A statikus jelzőbittel nem használhatsz két szálnál többet, mert a jelzőbit módosításakor nem kívánt versengés léphet fel.”
Ez egy másik kérdés. 🙂 (Már 2-nél sem ideális.)2007-11-07-17:21 #2139163„Mind igaz, de a konkrét példa nem tartalmaz sablont, így számomra nem volt lényeges a fenti probléma. Mivel a 3D-s alkalmazások 99,9%-a nem használ mást csak a float típust koordináták esetében, nincs is értelme sablonként megvalósítani a v3d osztályt.”
Ez csak egy példa volt, ami épp eszembe jutott (csak azért mert csináltam ehhez hasonlót sablonnal).
v3d = float * v3d ugyanúgy nem fog működni.„Szerintem meg a legpraktikusabb a D nyelv garbage collector képességének használata. 🙂 Így a kódot sem kell különösebben portolni.”
Nem tudom, hogy hogy működik, de pl. a java féle gc, az oly áhitattal említett gyors memória-kezelése miatt memória zabáló. Persze okosan megoldották, mivel a júzer felé az elvileg foglalt memóriát mutatja, közben a megengedett kereteken belül megeszi a gép erőforrásait.
A ref. pointert meg azért tartom praktikusnak, mert pont akkor és csakis akkor szabadít fel, amikor tényleg nincs rá szükség. És a delete parancsot soha nem kell kiadni. A használat meg ugyanaz. A definiálás meg ennyi:
refptr class ( Class ( … ) )
a
Class * class = new Class (…) + delete class helyett.
(Bár elvileg a new-t is át lehet definiálni… és akkor meg ugyanaz, kiv., hogy nem kell delete. :))„A statikus jelzőbittel nem használhatsz két szálnál többet, mert a jelzőbit módosításakor nem kívánt versengés léphet fel.”
Ez egy másik kérdés. 🙂 (Már 2-nél sem ideális.)2009-12-04-20:02 #1887366Üdv.
Csatoltam egy C++ kódot, amire a g++ a következő hibaüzenetet adja:
Code:test.cpp: In member function ‘bool Sphere::Intersect(const Ray&, HitRec*)’:
test.cpp:74: error: passing ‘const Vector3D’ as ‘this’ argument of ‘Vector3D Vector3D::operator-(Vector3D)’ discards qualifiers
test.cpp:76: error: passing ‘const Vector3D’ as ‘this’ argument of ‘float Vector3D::operator*(Vector3D)’ discards qualifiers
test.cpp:97: error: passing ‘const Vector3D’ as ‘this’ argument of ‘Vector3D Vector3D::operator*(float)’ discards qualifiers
test.cpp:97: error: passing ‘const Vector3D’ as ‘this’ argument of ‘Vector3D Vector3D::operator+(Vector3D)’ discards qualifiersAmi röveden annyi, hogy az említett függvényben egy konstans Vector3D objektumot nem tud átadni this argumentumként a felsorolt operátor függvényeknek…
A kódban máshol használom ezeket az operátor függvényeket, és arra nem jelent hibát…
Pedig elvileg itt is ugyanolyan Vector3D illetve float argumentumokkal próbálok kiértékelni műveleteket, mint máshol.Aki tudja, hogy mi a gond, illetve hogyan lehetne megoldani, az kérem írjon!
Előre is köszönöm! -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz