C++ kerdes…

Kezdőlap Fórumok Programozás C++ kerdes…

4 bejegyzés megtekintése - 61-64 / 64
  • Szerző
    Bejegyzés
  • #2155500
    jules
    Felhasználó

      Szevasztok,

      Valami gond van a programommal: van egy matrix.h es egy compex.h-m. Definialtam += operatort mindkettoben, mert ez kellene nekem a .cpp-mben.
      Viszont valami nem jo a forditonak, csak nem tudom, hogy micsodahuh.gif

      Ez a hibauzenet:

      Code:
      matrix.h: In member function ‘Matrix& Matrix::operator+=(const Matrix&) [with T = Complex]’:
      example.cpp:85:  instantiated from here
      matrix.h:246: error: invalid use of member (did you forget the ‘&’ ?)
      matrix.h:246: error: invalid use of member (did you forget the ‘&’ ?)
      example.cpp:85:  instantiated from here
      matrix.h:246: error: invalid use of member (did you forget the ‘&’ ?)
      matrix.h:246: error: invalid use of member (did you forget the ‘&’ ?)
      example.cpp:85:  instantiated from here
      matrix.h:247: error: invalid use of member (did you forget the ‘&’ ?)
      example.cpp:85:  instantiated from here
      matrix.h:248: error: invalid use of member (did you forget the ‘&’ ?)

      Ez pont a += operator definicios sorai.. Azert csatolom .h fajlokat, hatha nektek van otletetek..remelem

      #2155501
      pointux
      Felhasználó

        Először is, ha jól látom, akkor a „numRows” egy függvény. A „m.numRows”, pedig nem a visszatérési értékét adja. A visszatérési értéke így kérhető le: „m.numRows ()”.

        Ugyan nem hiba a „this” objektumon belül függvényt használni, de én nem használnék, mivel a védett változók az objektumon belül elérhetőek. És, ha nem kell függvényt hivogatni, akkor nem érdemes, mert az tovább tart. (Egynél nem gond, de, ha ezerszer kell meghívni, akkor már számít.) Magyarán így intézném: „this->rows”. A this használata sem kötelező, de szerintem áttekinthetőbb lesz tőle a kód és használhatóvá válik egy lokális változó ugyanazon a néven. pl:

        Code:
        :: ( int val ) {
        this->val = val; // az első val az objektum tulajdona, a másik egy függvény paramétere.
        }

        De, ahogy jól esik. De akkor is kell a „()” a végén.

        #2155502
        pointux
        Felhasználó

          Először is, ha jól látom, akkor a „numRows” egy függvény. A „m.numRows”, pedig nem a visszatérési értékét adja. A visszatérési értéke így kérhető le: „m.numRows ()”.

          Ugyan nem hiba a „this” objektumon belül függvényt használni, de én nem használnék, mivel a védett változók az objektumon belül elérhetőek. És, ha nem kell függvényt hivogatni, akkor nem érdemes, mert az tovább tart. (Egynél nem gond, de, ha ezerszer kell meghívni, akkor már számít.) Magyarán így intézném: „this->rows”. A this használata sem kötelező, de szerintem áttekinthetőbb lesz tőle a kód és használhatóvá válik egy lokális változó ugyanazon a néven. pl:

          Code:
          :: ( int val ) {
          this->val = val; // az első val az objektum tulajdona, a másik egy függvény paramétere.
          }

          De, ahogy jól esik. De akkor is kell a „()” a végén.

          #1887932
          csaba
          Felhasználó

            Hello,

            az elozo topikomhoz kapcsolodoan lenne kerdesem.

            A legeneralt vektoraimat el akarom forgatni veletlenszeruen vagy az x vagy az y vagy a z tengelyek korul. Gondoltam ehhez generalok 3 veletlen szamot (0,1,2) es ha pl. 0 akkor az x, ha 1 akkor az y, ha 2 akkor a z tengely korul forgatok el.

            Irtam valamit, de nem tudom, hogy jol gondolom-e a megvalositast.

            Code:
                int i;

                vector vec[N];
                rotvector rvec[N];

                // Initialize the random number generator
                // srand(time(0));
                for (i = 0; i < N; i++) {      float phi  = uniform(0.0f, M_2PIf);     float costheta = uniform(-1.0f, 1.0f);         float x = 1.0f * sqrtf(1-costheta*costheta) * cosf(phi);     float y = 1.0f * sqrtf(1-costheta*costheta) * sinf(phi);     float z = 1.0f * costheta;     vec[I].x = x;     vec[I].y = y;     vec[I].z = z;     /*  vec[I] --> rvec[I]

                rvec[I].x = x;
                rvec[I].y = y;
                rvec[I].z = z;

                */

            // itt probalnam legeneralni a forgatott vektorokat…

                typedef float r[I];
                srand ( time(NULL) );  // initialize random seed

                for(int i=0; i < N; i++ )     {    r[I] = rand() % 3 + 0;  // generalt szamok: vagy 0 vagy 1 vagy 2   switch ( r[I] )   { case 0:   RotateX();     break; case 1:   RotateY();     break; case 2:   RotateZ();     break;   }     }     float fCos, fSin;     fCos = cosf(epsilon);     fSin = sinf(epsilon);     float RotMatrixX[3][3] = {1.0f, 0.0f, 0.0f, 0.0f, fCos, -fSin, 0.0f, fSin, fCos};     float RotMatrixY[3][3] = {fCos, 0.0f, fSin, 0.0f, 1.0f, 0.0f, -fSin, 0.0f, fCos};     float RotMatrixZ[3][3] = {fCos, -fSin, 0.0f, fSin, fCos, 0.0f, 0.0f, 0.0f, 1.0f};     float vec[3] = {x,y,z};     // ROT AROUND 'X'     float RotateX ()     {     for (int i = 0; i < 3; i++)     {   double RvX = 0;   for (int k = 0; k < 3; k++)   RvX += RotMatrixX[I][k] * vec[k];   rvec[I] = RvX;     }     return RvX;     }   // ROT AROUND 'Y'     float RotateY ()     {     for (int i = 0; i < 3; i++)     {   double RvY = 0;   for (int k = 0; k < 3; k++)   RvY += RotMatrixY[I][k] * vec[k];   rvec[I] = RvY;     }     return RvY;     }   // ROT AROUND 'Z'     float RotateZ ()     {     for (int i = 0; i < 3; i++)     {   double RvZ = 0;   for (int k = 0; k < 3; k++)   RvZ += RotMatrixZ[I][k] * vec[k];   rvec[I] = RvZ;     }     return RvZ;     }

            [/I][/I][/I][/I][/I][/I][/I][/I][/I][/I][/I][/I][/I][/I][/I][/I][/I]

          4 bejegyzés megtekintése - 61-64 / 64
          • Be kell jelentkezni a hozzászóláshoz.