[C] Pointer niet gedefineerd??

Pagina: 1
Acties:
  • 35 views sinds 30-01-2008

  • cenix
  • Registratie: September 2001
  • Laatst online: 16:22
Ik ben bezig met het maken van een dubbel gelinkte lijst. Als ik een woord wil invoegen en wil aangeven waar de pointer heen moet wijzen, geeft de compiler (C++ Builder 5) een foutmelding, nl:

E2451: Undefined symbol 'pPrevious'

op deze regel "pCurrentNode->pNext->pPrevious = pTempNode;"

In de help kan ik niets vinden, ik hoop dat iemand mij hierbij kan helpen.

Hieronder staat de betreffende source:

C++:
1
2
3
4
5
6
7
typedef struct Nodes {
        struct WordList *pPrevious;
        char *pWord;
        struct WordList *pNext;
} Nodes;

Nodes   *pCurrentNode;


C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void WordStore_WordInsert (char *pcWord) {
        Nodes *pTempNode;
        pTempNode = (Nodes *)malloc(sizeof(Nodes));                             // Reserveer voldoende geheugen

        if (iNodes == 0) {                                                      // Als aantal woorden gelijk is aan 0
                // Make Circular list of 1 item.
                pTempNode->pPrevious = pTempNode;                               // Ingevoerd woordt zijn vorige is Ingevoerd woord (wijst naar zichzelf)
                pTempNode->pNext = pTempNode;                                   // Ingevoerd woord zijn volgende is Ingevoerd woord (wijst naar zichzelf)
                pCurrentNode = pTempNode;                                       // Huidig woord wordt zojuist ingevoerde woord.
        }
                                                                                // Aantal woorden is groter of ongelijk aan 0.

        pTempNode->pWord = pcWord;                                              // Vul woord.

        pTempNode->pPrevious = pCurrentNode;                                    // Ingevoerd woord zijn vorige woord wijst naar huidig woord.
        pTempNode->pNext = pCurrentNode->pNext;                                 // Ingevoerd woord zijn volgende is huidig woord zijn volgende
        pCurrentNode->pNext->pPrevious = pTempNode;                             // Huidig woord's volgende woord zijn vorige wijst naar zojuist ingevoerde woord.
        pCurrentNode->pNext = pTempNode;                                        // Huidig woord's volgende woord wordt zojuist ingevoerde woord.

        pCurrentNode = pTempNode;                                               // Huidig woord wordt zojuist ingevoerde woord.

        iNodes++;                                                               // Verhoog aantal Nodes met 1.
}


Ik gebruik de 'malloc' omdat dit door de leraar gewenst is (dit is een opdracht voor school).

(ps. alleen php syntax, omdat c/c++/cpp niet werkte)

ps. sorry voor het vern*ken van de layout

[ Voor 24% gewijzigd door cenix op 08-10-2003 19:04 . Reden: Aangepast na post van oisyn ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-08 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

gebruik [code=c++] voor c++ code

Maar wat meer info zou wel fijn zijn. Wat is bijvoorbeeld de definitie van Nodes? (en waarom noem je dat Nodes in het meervoud terwijl je eigenlijk 1 Node bedoelt?)

En waarom doe je een malloc ipv een new?

[ Voor 10% gewijzigd door .oisyn op 08-10-2003 18:56 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • cenix
  • Registratie: September 2001
  • Laatst online: 16:22
probleem opgelost O+ O+


C++:
1
2
3
4
5
6
7
typedef struct Nodes { 
        struct WordList *pPrevious; 
        char *pWord; 
        struct WordList *pNext; 
} Nodes; 

Nodes   *pCurrentNode;


moet zijn

C++:
1
2
3
4
5
6
7
typedef struct Nodes { 
        struct Nodes *pPrevious; 
        char *pWord; 
        struct Nodes *pNext; 
} Nodes; 

Nodes   *pCurrentNode;


struct WordList -> struct Nodes
Ik had de structure gerenamed omdat WordList eigenlijk een verkeerde benaming is. Hij kende de pPrevious natuurlijk niet.

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
cenix schreef op 08 October 2003 @ 18:51:

[..]

E2451: Undefined symbol 'pPrevious'

op deze regel "pCurrentNode->pNext->pPrevious = pTempNode;"

[..]

C++:
1
2
3
4
5
6
7
typedef struct Nodes {
        struct WordList *pPrevious;
        char *pWord;
        struct WordList *pNext;
} Nodes;

Nodes   *pCurrentNode;


[..]
je zet in de struct WordList telkens een pointer van het type struct Nodes.
Ik heb het hier even uitgeprobeerd met de struct Nodes in plaats van struct WordList en dat werkte foutloos. (g++ versie 3.2.3 linux)
edit:

oplossing niet gezien had 'm een tijdje openstaan zonder te refreshen O-)

[ Voor 13% gewijzigd door Shadowman op 08-10-2003 19:49 . Reden: te laat verstuurd ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-08 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

Goed, en dan nu nogmaals, waarom noem je het Nodes, en niet gewoon Node, aangezien 1 object slechts 1 node representeert? :)

Maar goed, het is dus eigenlijk gewoon een debugtopic, de fout had je makkelijk zelf kunnen vinden voordat je de topic opende

[ Voor 35% gewijzigd door .oisyn op 08-10-2003 19:53 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Dit topic is gesloten.