14. oktober 2003 - 14:43Der er
17 kommentarer og 1 løsning
Global #define konstant
Jeg sidder med et projekt indeholdende et antal klasser, i hver deres .h og .cpp fil, hvor mange af dem skal kende nogle globale konstanter. Derfor vil jeg lave en overordnet .h fil, der definerer konstanterne, og inkluderer de nødvendige klasse - headere. Problemet er, at jeg ikke kan bruge de definerede konstanter i koden til klasserne - compileren melder, at den ikke kender dem.
Projektets struktur er nogenlunde således: 1) CPP filen indeholdende main() inkluderer CC.h 2) CC.h indeholder følgende: #ifndef CC_H #define CC_H
// Konstanter #define wheelIRQ 5 #define timeUnit 1000 // denne konstant er ikke kendt i klasserne ?
// headers til diverse klasser: #include "IO_Driver.h" #include "Sensor.h" // include en masse mere
#endif
Hvordan får jeg løst problemet, så mine konstanter er kendt i samtlige klasser ?
Jeg ved godt det her ikke er så brugbart, men det anses som dårlig vane at lave globale variable...
Det du nok burde gøre er at oprette en singleton-klasse som styrer alle variable for dig... Og så selvfølgelig beskytte dem, så du ikke får race-conditions
Ovenstående virker. timeUnit er også kendt i den "rigtige" main, men ikke i de forskellige klasser.
Jeg bruger MS Visual Studio .NET, men det burde vel ingen forskel gøre ?
Kan det have noget med kompileringsrækkefølgen at gøre ? For hvis ikke CC.h er læst af compileren før den prøver at compile noget, der gør brug af konstanterne, vil det jo gå galt.
Det synes jeg også. Desværre har jeg ikke tid til at grave mere i det i øjeblikket.
Synes godt om
Ny brugerNybegynder
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.