Kezdőlap › Fórumok › Programozás › C++ kerdes…
- This topic has 63 hozzászólás, 7 résztvevő, and was last updated 17 years, 2 months telt el by
pointux.
-
SzerzőBejegyzés
-
2008-04-15-15:52 #2155500
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 micsodaEz 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
2008-04-16-15:30 #2155501Elő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.
2008-04-16-15:30 #2155502Elő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.
2009-12-04-20:03 #1887932Hello,
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 seedfor(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]
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz