C++ probléma

Kezdőlap Fórumok Programozás C++ probléma

3 bejegyzés megtekintése - 11-13 / 13
  • Szerző
    Bejegyzés
  • #2139162
    pointux
    Felhasználó

      „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.)

      #2139163
      pointux
      Felhasználó

        „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.)

        #1887366
        csaba
        Felhasználó

          Ü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 qualifiers

          Ami 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!

        3 bejegyzés megtekintése - 11-13 / 13
        • Be kell jelentkezni a hozzászóláshoz.