Toon posts:

[c++] Struct extern maken meerdere forms

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi

ik heb het volgende probleem, ik wil dus een struct extern maken zodat ik hem op meerdere forms kan gebruiken. Met gewone variablen gaat het wel, maar met een struct krijg ik een foutmelding. :(

(ik maak dus een variable aan in de main.cpp en doe hem als extern in de .h declaren en vervolgens die .h in de andere forms includen zodat ik de variabelen daar ook kan gebruiken) En dit werkt. ;)

Dit is de definitie van de struct in de main.cpp
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct stDataStruct
{
bool bAanDeBeurt;
bool bBallenArraySpeler[2][31];
bool bWoordGeraden;
bool bTweeSpelers;
char cLingoWoord[7];
String sSpelerTweeNaam;
String sSpelerEenNaam;
short int siSpelerEenScore;
short int siSpelerTweeScore;
unsigned short int usiGespeeldeBeurten;
unsigned short int usiLingoWoordLengte;
unsigned short int usiTotaalBeurten;
unsigned short int usiRaadPoging;
}stLingoDataStruct;


Ik heb wat pogingen gedaan om hem extern te declaren in de .h. Als ik een variable op dezelfde plaats extern declareer geeft dit geen problemen dus de plaats in de source waar ik het doe is goed.
Ook heb ik geprobeerd de hele struct definitie enzo extern te declaren, of alleen de struct naam. Maar dit wil allemaal niet helpen:S

Hij geeft hierbij
[C++ Error] lingo.h(233): E2092 Storage class 'extern' is not allowed here

ik denk dat ik iets simpels fout doe, misschien is er hier iemand die mij kan vertellen wat, de GOT search en google hebben mij niets opgeleverd.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:00
Wil je instanties van die struct in andere forms kunnen gebruiken, of wil je één instantie van die struct in meerdere verschillende forms kunnen gebruiken (global) ?

Indien het eerste: maak een header file waar je de definitie van die struct in plaatst, en gebruik die header file in de nodige 'forms' of classes.

https://fgheysels.github.io/


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:10

.oisyn

Moderator Devschuur®

Demotivational Speaker

Extern geeft aan dat een identifier (variabele of functie) in een andere translation unit (sourcefile) gedefinieerd wordt. Een struct of class kun je dus niet extern maken, de compiler heeft de definitie gewoon nodig om te kunnen compilen. Je zult je struct dus in een header moeten definieren, en die moeten includen in de verschillende sourcefiles waar je de struct nodig hebt.

.edit: misschien begrijp ik je probleem ietwat verkeerd. Dit zou je moeten doen:

In header.h:
C++:
1
2
3
4
5
6
struct MyStruct
{
    int i;
};

extern MyStruct myVariable;   // declaratie


In sourcefile1.cpp:
C++:
1
2
3
#include "header.h"

MyStruct myVariable;   // definitie


In sourcefile2.cpp
C++:
1
2
3
4
5
6
#include "header.h"

void f()
{
    myVariable.i = 100;
}

[ Voor 35% gewijzigd door .oisyn op 09-05-2005 15:20 ]

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.


Verwijderd

Topicstarter
Met een header werkt het inderdaad wel, stom van me dat ik daar niet aan gedacht heb! 8)7
Tanx :)