Avatar billede stefan Nybegynder
24. januar 2000 - 23:50 Der er 2 kommentarer og
3 løsninger

Klasser og Forme

Jeg har problemer med at bruge mine klasser i forbindelse med Tform1.

Hver gang jeg forsøger at tilgå en funktion i en klasse får jeg fejlen:

  Structure required on left side of . or .*

Jeg kalder feks. en funktion hvis der bliver trykket på en knap, kaldet ser således ud:

  bruger.tilfoej();

Er der nogen der kan forklare hvad grunden er ...
Avatar billede bjarke Nybegynder
25. januar 2000 - 07:53 #1
Prøv bruger->tilfoej();  // Pointer-notation
Avatar billede bjarke Nybegynder
25. januar 2000 - 07:58 #2
Hvad man lærer hurtigt glemmer man også hurtigt:-( Men, det er nok fordi du anvender 'bruger' som et objekt og regner med at den har en metode 'tilfoej'. 'bruger' er imidlertid formentlig en pointer (en der peger på det rigtige objekt - altså ikke selve objektet) og du skal derfor bruge pointer-notationen.

Var det forståeligt? (hvis jeg tager fejl, bliver jeg nok snart rettet af dmk eller soepro ;-)
Avatar billede dmk Nybegynder
25. januar 2000 - 10:01 #3
Hej Bjarke.
Jeg vil ikke rette på dig, jeg vil bare sige at det er snyd du står så tidligt op, så du kan score point før vi andre overhovedet er vågnet ;-)

Hvis Bjarkes svar imidlertid ikke er nok, så prøv lige at forklare sammenhængen mellem klasserne. Ligger objektet bruger direkte tilgængeligt derfra hvor du kalder tilføj-funktionen? Hvis den fx. ligger på TForm1, og du står på TFrom2, så kan du ikke bare kalde objektet, uden først at fortælle hvor det ligger ( TForm1->Bruger.Tilføj() ), plus at du selvfølgelig skal have tilgang til objektet der hvor du står (dvs. Bruger objektet skal være public, eller TForm2 skal være friend til TForm1).

Når nu alt det er på plads skal du gøre som Bjarke også siger, hvis det er en pointer skal du bruge bruger->tilføj , og hvis det er et objekt skal du bruge bruger.tilføj .

DMK
Avatar billede faceorbit Nybegynder
25. januar 2000 - 11:00 #4
Bruger du Borland c++ builder ?

ser dine erklæringer af klassen bruger sådan ud :

class Bruger {
};
extern Bruger *bruger;

har du indkluderet den unit hvor du definere (eller implementere) klassen bruger i Tform1 ?
Er der en 'forward erklæring' i Tform1 :

Bruger *bruger;
?

hvis dine definitioner ser sådan ud kan du benytte notationen

bruger->tilfoej();
Avatar billede bjarke Nybegynder
25. januar 2000 - 19:10 #5
dmk >> Hi hi. Men det er jo også min eneste chance mod dig ;-) I øvrigt tillykke med at du er jordet ind på førstepladsen på rekordtid.
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