Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C++] Pointer loop!?

Pagina: 1
Acties:
  • 445 views

  • Chip.
  • Registratie: Mei 2006
  • Niet online
Hallo mensen,

Ik vroeg me het volgende af. Ik heb een struct Specs (die wat specificaties bevat) en een struct Motor met twee pointers naar Specs *L en *R. Struct specs bevat o.a. de snelheid. Nu wou ik graag de snelheid van L en R laten zien op het scherm. Dus ik dacht van nou ik declareer een char met LR als waarde laat een for loopje doen en hij print de snelheid van L en R. Echter dat doet hij dus niet omdat hij de compiler vindt dat "i" geen declaratie is van de struct motor (wat ook is).

Mijn vraag is nu (obvious) hoe kan ik dit zeg maar wel laten makkelijk laten uitprinten (want immers als ik bijvoorbeeld naast L en R nog meerdere pointers had werd het ?omslachtig? om steeds motor -> "letter" -> snelheid te typen?

Me code is als volgt, wanneer je de gehele code wilt zien kun je hier klikken
C++:
1
2
3
4
5
6
7
8
9
void list (Motor *motor)
{
    char i[4]= "LR";

    for (short k = 0; k < 2; k++)
    {
        printf("Motor -> %c -> snelheid = %u\n", i[k], motor -> i[k] -> snelheid);
    }
}


Alvast bedankt voor de hulp

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 18-11 19:36
Je kunt natuurlijk niet 'motor->i[k]->snelheid' aanroepen. De compiler zoekt nu naar een member i in motor, die inderdaad niet bestaat. Waarom heb je een for lus nodig als je maar twee specs in één motor hebt?

Doe gewoon:

C++:
1
2
3
4
5
void list (Motor *motor)
{
    printf("Motor -> L -> snelheid = %un\n", motor->L->snelheid);
    printf("Motor -> R -> snelheid = %un\n", motor->R->snelheid);
}

zeroxcool.net - curity.eu


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Je wilt dan een array van pointers naar je specs hebben.
Niet allemaal losse "member variables" (geen idee hoe dat bij structs heet eigenlijk) natuurlijk.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • Chip.
  • Registratie: Mei 2006
  • Niet online
Grijze Vos schreef op donderdag 08 mei 2008 @ 16:16:
Je wilt dan een array van pointers naar je specs hebben.
Niet allemaal losse "member variables" (geen idee hoe dat bij structs heet eigenlijk) natuurlijk.
Zou je wellicht een voorbeeld kunnen geven hoe ik dat dan moet doen met pointers in een array zetten?

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Wat je in dit geval zou kunnen doen is een union gebruiken om L en R zowel via de pointers L en R als via een array toegankelijk te maken.

C++:
1
2
3
4
5
6
struct Motor{
    union{
        struct{ Specs *L, *R; };
        Specs *m_Specs[];
    };
};


Makkelijker zou overigens zijn om gewoon een array van Specs pointers te maken, zonder de union.

Nou kun je dit doen:

C++:
1
2
3
4
5
6
7
void list (Motor *motor) 
{
    for (short k = 0; k < 2; k++) 
    { 
        printf("Motor -> %c -> snelheid = %u\n", i[k], motor -> m_Specs[k] -> snelheid); 
    } 
}

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Wouser schreef op donderdag 08 mei 2008 @ 16:55:
[...]
Zou je wellicht een voorbeeld kunnen geven hoe ik dat dan moet doen met pointers in een array zetten?
Hoe maak je een array van 2 elementen van type X?
C++:
1
X array[2];

Zo dus, en dan mag je voor X ook een pointer type invullen. Dan heb je een array van 2 pointers.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 07:40

Creepy

Tactical Espionage Splatterer

Oftewel: leer de basis van de taal voordat je er echt dingen mee gaat bouwen. Dat je de basis niet kens is niet erg, dat je om een kant en klaar werkend voorbeeld vraagt en jezelf niet lijkt te willen verdiepen in de basis (!) van C++ is dat wel.
Hier in PRG gaan we er vanuit dat je jezelf de basis eigen kan maken. Vragen om voorbeelden van een behoorlijk basis iets is hier not done (vragen om kant en klare voorbeelden uberhaupt zien we hier al liever niet.)

In Programming Beleid wordt dat prima uitgelegd. Ik zou je willen vragen die eens door te lezen voor een eventueel toekomstig topic.

[ Voor 44% gewijzigd door Creepy op 08-05-2008 21:48 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.