Avatar billede susrn Nybegynder
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)
{
....
}
Avatar billede arne_v Ekspert
11. juni 2003 - 15:19 #1
TGlobalDataDef tgdd;
InitPicture(&tgdd);
Avatar billede the_bma_man Nybegynder
11. juni 2003 - 15:21 #2
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.
Avatar billede susrn Nybegynder
11. juni 2003 - 15:34 #3
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 *)'
Avatar billede arne_v Ekspert
11. juni 2003 - 15:38 #4
Linker du med den .obj fil der er lavet udfra .cpp filen med
InitPicture implementationen ?
Avatar billede arne_v Ekspert
11. juni 2003 - 15:39 #5
Har du prøvet at slette den "extern" i .h filen ?
Avatar billede susrn Nybegynder
11. juni 2003 - 15:41 #6
?
Kan man en constructor til en struct? Så kan jeg jo kalde funktionen derfra, det burde vel være problemfrit
Avatar billede arne_v Ekspert
11. juni 2003 - 15:49 #7
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() { ... };
};
Avatar billede arne_v Ekspert
11. juni 2003 - 15:49 #8
(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)
Avatar billede susrn Nybegynder
11. juni 2003 - 15:52 #9
nu er det desværre ikke mit kode..., jeg vil prøve om det hjælper at slette ekstern
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