11. juni 2003 - 15:11
Der er
7 kommentarer og 2 løsninger
kald af funktion
Jeg har en variabel af typen TGlobalDataDef, den skal initialiseres, ved at kalde metoden InitPicture, hvordan gør jeg det ? Her er h filen hvor TGlobalDataDef defineres: #ifndef GlobalH #define GlobalH #include <Graphics.hpp> typedef struct { bool Komma, Ovr, EscSomLuk; void *Spread; TPicture *Tree[3][9], *Plus, *Minus; } TGlobalDataDef; extern void __fastcall InitPicture(TGlobalDataDef *GlobalData); //---------------------------------------------------------#endif funktionen InitPicture er implementeret i cpp filen dertil. void __fastcall InitPicture(TGlobalDataDef *GlobalData) { .... }
Annonceindlæg fra DE-CIX
TGlobalDataDef tgdd; InitPicture(&tgdd);
Du instansierer en variabel, der hvor du skal bruge den. Og kander din funktion med en pointer hertil TGlobalDataDef myVar; InitPicture(&myVar); I InitPicture skal du så bruge notationen GlobalData->Komma osv. til at referere til de enkelte elementer.
Det var jo også mit eget bud, men jeg får en linker fejl når jeg forsøger på den måde?? [Linker Error] Unresolved external '__fastcall InitPicture(TGlobalDataDef *)'
Linker du med den .obj fil der er lavet udfra .cpp filen med InitPicture implementationen ?
Har du prøvet at slette den "extern" i .h filen ?
? Kan man en constructor til en struct? Så kan jeg jo kalde funktionen derfra, det burde vel være problemfrit
Hvis det er en mulighed kan du kgodt lave den om til en klasse med constructor. class TGlobalDataDef { public: bool Komma, Ovr, EscSomLuk; void *Spread; TPicture *Tree[3][9], *Plus, *Minus; TGlobalDataDef() { ... }; };
(rent teknisk kan du også sætte en constructor på en struct i C++, men jeg synes det er pænest så at lave den som class)
nu er det desværre ikke mit kode..., jeg vil prøve om det hjælper at slette ekstern
Kurser inden for grundlæggende programmering