Avatar billede tycho Nybegynder
19. juni 2003 - 18:02 Der er 4 kommentarer og
1 løsning

Compiler opfører sig mærkeligt.

Jeg er igang med et win32 program, og jeg oplever for øjeblikket noget mærkeligt...
Jeg har oprettet en ny klasse i en .h fil og der er ikke noget galt med den, men når jeg compiler, så får jeg fejlen "'class' type redefinition". Jeg har ikke oprettet nogen anden klasse med navnet, og det hjælper ikke at ændre navnet.
Jeg prøver så at proppe klassen ind i en anden .h fil og pludselig får jeg også fejlen ved de andre klasser der ligger i filen (også hvis jeg sletter den klasse som startede med at forårsage problemet).
Jeg er kommet frem til den konklusion, at jeg må ha' gjort noget som forvirrer compileren, men jeg kan bare ikke forstå hvad.
Er der nogen der kender til dette problem og evt. en løsning?

-på forhånd tak

Ps. jeg bruger MVC++, hvis det kan være til nogen hjælp...
Avatar billede soreno Praktikant
19. juni 2003 - 18:03 #1
Indkapsel din klasse i dette:

#ifndef KLASSENAVN_H
#define KLASSENAVN_H

class
{
[..]
};

#endif
Avatar billede tycho Nybegynder
19. juni 2003 - 18:10 #2
tusind tak.
Men hvad er egentlig grunden til at denne fejl kommer?
Avatar billede disky Nybegynder
19. juni 2003 - 18:15 #3
pga include's blvier din klasse hentet flere gange, det soreno sige gør at compileren ikke gider kigge mere end 1 gang.
Avatar billede soreno Praktikant
19. juni 2003 - 18:16 #4
Når du kompilerer et projekt ertatter preprocessoren include statementet med det faktiske indhold af filen som er defineret i statementet.

Hvis du erklærer samme klasse flere gange så kaster compileren op.
Det gør den hvis du includer samme .h fil flere gange uden at guarde den.

Ved at lave ovenstående konstruktion vil preprocessoren kun indsætte indholdet af filen én gang. De næste gange vil preprocessoren hoppe uden om if sætningen (#ifndef KLASSENAVN_H)
Avatar billede tycho Nybegynder
19. juni 2003 - 18:17 #5
okay, så forstår jeg det bedre. Tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester