22. juni 2003 - 23:29
Der er
6 kommentarer og 1 løsning
Kald metode med dobbelt double-pointer
Jeg har en 2-dimensionel vektor (STL vector), som jeg skal bruge til at kalde en metode, der skal have en dobbelt pointer med. Jeg bruger VC++ 6.0 Jeg vil kalde denne metode: void LinEq(int n, float **Coef, float *Right, float *Res); Men i denne kode: vector< vector<float> > Coef; ... LinEqOpg1(n, Coef[][n], &Right[0], &Res[0]); får jeg denne fejl: error C2059: syntax error : ']' Hvordan får jeg fat i en **float fra min matrice, hvis jeg ikke må skrive "Coef[][n]"?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
&(&Coef[n]) går heller ikke: error C2102: '&' requires l-value
Ups, det var også bare taget ud af hovedet ;) hvad med int *i = &Coef[n]; LinEqOpg1(n, &i, &Right[0], &Res[0]); Det er heller ikke afprøvet, men burde virke...
float *f = &Coef[n]; LinEqOpg1(n, &f, &Right[0], &Res[0]); går heller ikke: error C2440: 'initializing' : cannot convert from 'class std::vector<float,class std::allocator<float> > *' to 'float *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Hvorfor et element vil du gerne overføre? float *f = &Coef[m][n] men er det colonnerne det du vil overføre? eller er det kun til et enkelt element?
Jeg tror ikke at det kan lade sig gøre. vector< vector<float> > Coef; er en vektor af vektorer. Man kan få en pointer til float fra den indre vektor. Man kan få en pointer til vector fra den ydre vector. Men jeg tror ikke at man kan få en pointer til pointer til float ud af den ydre vector.
Jeg har fundet en løsning på mit problem. Skal man bruge min metode skal man lave et pointer-array der peger på rækkerne i matrixen. Dette er lidt besværligt så jeg bruger ikke STL::vector længere, men rent pointer-baserede arrays. Så er der vist på det rene.
Kurser inden for grundlæggende programmering