[c++] pointer probleem

Pagina: 1
Acties:

  • Lord_T
  • Registratie: Oktober 2000
  • Laatst online: 31-07 09:50
Hi even het volgende.... ik zit met een stuk code en op een bepaald punt heeft iedere pointer de juiste waarde maar even daaronder hebben ze allemaal de waarde van de laatste pointer. Uhm hoe ga ik dit uitleggen....

Situatie is als volgt:
ik heb pointer 1 die naar 3 andere pointers wijst. Die 3 andere pointers hebben allemaal eigenschappen.... Als ik nou een list iterator gebruik om over die eerste pointers te itereren dan dan om de een of andere reden is mhead gelijk aan de mtail en is gelijk aan de laatste 3 pointers. Waar heb ik een fout gemaakt? Zit dat dan in de list? Of in de pointers? Of ergens anders?

De code die ik gebruik ziet er als volgt uit:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Combination::Combination()
{
    TractorPtr bTractorPtr;                  // hier maak ik wat pointers aan
    TrailerPtr bTrailerPtr;
    DriverPtr  bDriverPtr;

    f =fopen(filename1, "r");
    while(!feof(f))
    {   
        fscanf(f,"%s %s %s",Temp1,Temp2,Temp3);
        startTime = atoi(Temp2);
        endTime = atoi(Temp3);
        TractorPtr aTractorPtr = new Tractor();
        for(int j=0; j<12;j++)
            aTractorPtr->mTractorName[j] = Temp1[j];               // hier krijgen ze wat waardes
        aTractorPtr->mStart = int(startTime/100)*60 + startTime%100;
        aTractorPtr->mEnd = int(endTime/100)*60 + endTime%100;
        mTractorList.AddAtEnd(aTractorPtr);
        aTractorPtr->mTractorNumber=mTractorList.GetSize();
    }
    fclose(f);
    ListIterator <TractorPtr> iter1(mTractorList);
    
    f =fopen(filename4, "r");
    
    CombiPtr aCombi = new Combi();
    while(!mCombiList.IsEmpty())
        mCombiList.RemoveFirst();
    while(!feof(f))
    {
        fscanf(f,"%s %s %s %s",Temp1,Temp2,Temp3,Temp4);
            for(iter1.GotoBegin();!iter1.AtEnd();iter1.GotoNext())
        {
            if(!_stricmp(iter1.GetElement()->mTractorName,Temp1))
            {
                                                    count++;
                bTractorPtr = iter1.GetElement();
            }
        }
        for(iter2.GotoBegin();!iter2.AtEnd();iter2.GotoNext())
        {
            if(!_stricmp(iter2.GetElement()->mDriverName,Temp3))
            {
                count++;
                bDriverPtr  = iter2.GetElement();
            }
        }
        for(iter3.GotoBegin();!iter3.AtEnd();iter3.GotoNext())
        {
            if(!_stricmp(iter3.GetElement()->mTrailerName,Temp2))
            {
                count++;
                bTrailerPtr = iter3.GetElement();
            }
        }
        if(count < 3)
            cout<<"Count te laag, onderdeel combinatie niet gevonden" <<endl;
        else
        {           
            aCombi->mDriverPtr = bDriverPtr;
            aCombi->mTractorPtr = bTractorPtr;
            aCombi->mTrailerPtr = bTrailerPtr;
            if(mCombiList.GetSize() == 0)
                mCombiList.AddAtFront(aCombi);
            else
                           mCombiList.AddAtEnd(aCombi);
            aCombi->mCombinationNumber = mCombiList.GetSize();
        }
        count = 0;
        cout<<bDriverPtr->mDriverName<<" "<<bTractorPtr->mTractorName<<" "<<bTrailerPtr->mTrailerName<<endl;
        cout<<aCombi->mDriverPtr->mDriverName<<" "<<aCombi->mTractorPtr->mTractorName<<" "<<aCombi->mTrailerPtr->mTrailerName<<endl;  
    }   //hier werken ze nog
    ListIterator <CombiPtr> iter4 (mCombiList);
    for(iter4.GotoBegin();!iter4.AtEnd();iter4.GotoNext())
    {
        cout<<iter4.GetElement()->mCombinationNumber<<" "<<
          iter4.GetElement()->mDriverPtr->mDriverName<<" "<<
          iter4.GetElement()->mTractorPtr->mTractorName<<" "<<
          iter4.GetElement()->mTrailerPtr->mTrailerName<<endl;  // hier niet meer
    }
    fclose(f);
}


iter1 t/m iter3 geven elk de goede waardes aan , maar iter4 doet dus niet wat ik wil..... omdat het misschien in de list dingen zit zal ik die ook even neerzetten....

mList.cpp
mList.h


edit: wat ingekort... uhm jullie moeten het eerste deel dus maar geloven ;)

[ Voor 37% gewijzigd door Lord_T op 04-08-2003 00:58 ]

ja ja... niet iedereen heeft dezelfde kennis... wees daarom ook eens gewillig en geef een antwoord op een vraag ;)


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Uhm kun je asjeblieft die 172 regels code wat inkorten tot relevante stukken? :?

Professionele website nodig?


  • [ti]
  • Registratie: Februari 2000
  • Niet online
Staan er bij jullie op school geen stokslagen op het gebruik van (f)scanf? brrr...

(Omdat scanf en familie niet op lengte let van de in te lezen van de data krijg je al snel overflows waarmee je stack aan gort gaat. Dit zijn de meest voorkomende programmeer fouten (buffer overflows))

  • Lord_T
  • Registratie: Oktober 2000
  • Laatst online: 31-07 09:50
curry684 schreef op 03 August 2003 @ 18:46:
Uhm kun je asjeblieft die 172 regels code wat inkorten tot relevante stukken? :?
ok done... sorry... dacht dat het zou helpen...

ja ja... niet iedereen heeft dezelfde kennis... wees daarom ook eens gewillig en geef een antwoord op een vraag ;)


  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 26-10-2024

madwizard

Missionary to the word of ska

Misschien CombiPtr aCombi = new Combi(); binnen de loop halen? Zoniet, dan zou het misschien handig zijn als je even uitlegt wat de code moet doen, wat z'n output nu is en wat het had moeten zijn want ik kan er verder niet veel wijs uit.

www.madwizard.org


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

offtopic:
Lord_T: de meeste mensen doen hun GoT-behulpzaamheid vervullen in loze paar minuutjes die ze soms over hebben. 172 regels van andermans code doorlezen doe ik zelf iig niet voor de lol tijdens een dood moment, en meer mensen met mij ;)

Professionele website nodig?


  • Lord_T
  • Registratie: Oktober 2000
  • Laatst online: 31-07 09:50
madwizard schreef op 04 August 2003 @ 09:49:
Misschien CombiPtr aCombi = new Combi(); binnen de loop halen? Zoniet, dan zou het misschien handig zijn als je even uitlegt wat de code moet doen, wat z'n output nu is en wat het had moeten zijn want ik kan er verder niet veel wijs uit.
damn das goed... dat was de fout inderdaad! Thnx

ja ja... niet iedereen heeft dezelfde kennis... wees daarom ook eens gewillig en geef een antwoord op een vraag ;)

Pagina: 1