Page 1 of 1

[GP]Pointer probleem.

Posted: Sat Nov 18, 2006 8:49 pm
by 0g1op
Hoe kan ik het volgende probleem oplossen?

Ik wil een functie maken die een pointer naar een 'Lesuur' terug geeft.
Dus bv:
Lesuur* getLesuur(int lesuurNummer);

Het volgende werkt niet omdat dit een 'const Lesuur*' terug geeft, maar ik wil dus een 'Lesuur*' hebben.
Lesuur* getLesuur(int lesuurNummer)
{
return &fLesuur_vector[lesuurNummer];
}

Het volgende werk ook niet omdat hier het 'lesuur' lokaal aangemaakt is en als we dan uit de functie gaan, is deze dus weg.
Lesuur* getLesuur(int lesuurNummer)
{
Lesuur lesuur = fLesuur_vector[lesuurNummer];
return &lesuur;
}

'fLesuur_vector' is hier in beide gevallen van het type 'vector<Lesuur>'.

Alvast bedankt voor de hulp.

Posted: Sat Nov 18, 2006 9:58 pm
by Karel
Er is een goede reden waarom hetgeen jij probeert niet gaat. Een vector zit zo in elkaar, dat het kan gebeuren dat alle objecten gekopieerd worden naar een andere geheugenlocatie wanneer er een nieuw object toegevoegd wordt met push_back (omdat de gealloceerde array niet meer groot genoeg is). Dat betekent dus concreet dat die Lesuur objecten continu tijdens het programma van geheugenlocatie switchen, en pointers naar die objecten dus na een tijdje ook niet meer zullen werken en memory exceptions zullen veroorzaken.

Als je per sé met pointers wilt werken naar die objecten, dan moet je met list werken ipv vector, bij list verandert de geheugenlocatie niet. Een alternatief is met een vector<Lesuur*> werken ipv een vector<Lesuur> en dan gewoon fLesuur_vector[lesuurNummer] teruggeven. Je moet dan wel zelf de new en delete's in het oog houden. Ik zou op het eerste zicht voor de tweede optie kiezen.

Posted: Sat Nov 18, 2006 10:26 pm
by 0g1op
Bedankt voor het antwoord, ik zal die 2e manier dan proberen.

Posted: Sun Nov 19, 2006 1:21 am
by Shinta
0g1op wrote:Bedankt voor het antwoord, ik zal die 2e manier dan proberen.
Ikheb een gelijkaardig probleem gehad, door een kleine aanpassing door te voeren en die laatste methode toe te passen kwam ik er.

Posted: Sun Nov 19, 2006 4:33 pm
by Verdyck
Goeien bal Stino van dat hier eens te vragen, ik zei toch dat ge hier ook geholpen word op het WINAK-forum voor een moeilijke informaticavraag en wss nog veel sneller ook dan op een andere plaats.