[GP]Pointer probleem.

Forum van 2de Bachelor Informatica.

Moderator: Praesidium

0g1op
Posts: 89

[GP]Pointer probleem.

Post#1 » Sat Nov 18, 2006 8:49 pm

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.

User avatar
Karel
WOZ
Posts: 497

Post#2 » Sat Nov 18, 2006 9:58 pm

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.

0g1op
Posts: 89

Post#3 » Sat Nov 18, 2006 10:26 pm

Bedankt voor het antwoord, ik zal die 2e manier dan proberen.

User avatar
Shinta
WOZ
Posts: 1122

Post#4 » Sun Nov 19, 2006 1:21 am

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.

User avatar
Verdyck
Posts: 368

Post#5 » Sun Nov 19, 2006 4:33 pm

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.
La pensée ne doit jamais se soumettre, ni à un dogme, ni à un parti, ni à une passion, ni à un intérêt, ni à une idée préconçue, ni à quoi que ce soit, si ce n'est aux faits eux-mêmes; parce que, pour elle se soumettre, ce serait cesser d'exister.

Return to “2de Bachelor”

Who is online

Users browsing this forum: No registered users and 40 guests