Avatar billede jwj Nybegynder
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]"?
Avatar billede tam Nybegynder
23. juni 2003 - 10:39 #1
&(&Coef[n])
Avatar billede jwj Nybegynder
23. juni 2003 - 12:39 #2
&(&Coef[n]) går heller ikke:

error C2102: '&' requires l-value
Avatar billede tam Nybegynder
23. juni 2003 - 13:04 #3
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...
Avatar billede jwj Nybegynder
23. juni 2003 - 13:17 #4
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
Avatar billede segmose Nybegynder
23. juni 2003 - 13:22 #5
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?
Avatar billede arne_v Ekspert
24. juni 2003 - 20:44 #6
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.
Avatar billede jwj Nybegynder
24. juni 2003 - 21:16 #7
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.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester