Jeg prøvede at tilføje klassedefinitionen i Table.h, men fik bare mange flere fejlmeddelelser (blandt andet flere med noget i retning af \"Multiple declaration....\" og \"Earlier declaration...\").
Okay, du skal have alle dine definitioner af klasser, structs og alt muligt andet i dine headerfiler. cpp-filen skal benyttes til at implementere funktioner i. Det gør du sådan her:
i headerfilen:
class XX { void func(); };
I CPP filen:
void XX:func() {
}
Når du inkluderer en .h fil, vil compileren kende til alt det du har defineret i din h fil. Men alt hvad der defineres i en cpp fil, vil kun kendes af alt det kode der kommer EFTER den definition, og kan altså kun benyttes lokalt i den fil.
class x{ y a_y; };
class y x a_x; };
I dette tilfælde vil den ikke kunne compile class x, da den har en menber-variabel, som compileren endnu ikke er har set definitionen på. Den kan godt compile class y, da den har set definitionen på class x tidligere i samme fil.
Hvis table.cpp skal kunne kalde et objekt fra din form, så skal du have en pointer til formen med i klassen til table.h. Det vil sige, at du måske skal lade din klasse initialiseres som noget i stil med:
class Table { MyForm* Form; Table(MyForm* inForm) {Form=inForm; } };
Så vil du have en pointer på din Table, som du kan tilgå på normal vis: Form->SomeFunction();
Det er rigtigt at Table.h skal inkludere effekt.h, for at kende til din form. Men det kan godt give nogle problemer, hvis to headerfiler inkluderer hinanden. Jeg kan ikke rigtigt huske, hvordan Builder har det med det, men du kan jo prøve dig frem.
Når du laver et objekt af klassen Table, skal du bare give den en pointer til din form med. Det kan du gøre sådan her (hvis du står i en funktion i din form):
Husk altid at deklarere dine variabler før du bruger dem..
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.