12. november 2004 - 01:12Der er
33 kommentarer og 1 løsning
Statisk variabel
Følgende fungerer godt nok:
class Z { public: Z(); static String abc; };
Z::Z() { String abc="blabla"; }
- men det gør det ikke, når jeg vil hente værdien af abc fra et andet scope (hvadenten det er fra metoder i samme klasse eller en anden). Jeg har husket den globale res.op.
Til din sidste kommentar: Det virker glimrende, hvis jeg skriver String abc. Undlader jeg String, får jeg fejl.
Jeg prøver lige dit forslag.
Det jeg vil, er sådan set bare at sætte værdien af en variabel (dog helst konstant, da den ikke skal ændres) i en metode. Denne variabel/konstant vil jeg så have adgang til globalt.
Når du har en "static const String abc;" i din class, kan du ikke give den en værdi i konstructoren, du skal give den en værdi når du erklærer variablen:
Du kan fjerne const, så kan du give den en værdi i konstruktoren, men så har den først værden når nogen kalder konstructoren (dvs laver et object af typen Class).
Den fejl besked du får fra Borland er lidt misvisende.
Okay, men jeg finder først værdien til abc i en metode til klassen. Det er til et login-system, hvor jeg vil sætte abc til brugerens navn, når vedkommende logger ind.
Er Loginkontrol en class for alle brugere eller for en bruger?
Hvis det er én bruger skal den vel bare gemme brugernavn i Tjek_Login. Hvis Loginkontrol er for alle brugere er den vel nødt til at have en liste med alle brugeres navne. Eller en member der angiver den "nuværende" bruger (ikke kønt).
Jeg er ikke helt sikker på, jeg forstår dit spørgsmål. Men hvis jeg gør, så er det kun for én bruger. Jeg kan dog ikke se, hvordan jeg skal hente værdien uden for denne klasse, hvis jeg blot sætter en varibael i klassen til den pågældende værdi.
Man er nødt til at kende det object for hvilket man vil have username.
Så du bliv nødt til at lade xxx kende objektet, det kan gøres ved at flytte dit Loginkontrol objekt ud i dit TForm object, eller ved at lave dit Loginkontrol object om til en global variabel.
Det var lige præcis det, jeg ville frem til. Jeg tror bedst, jeg kan lide løsning nr. 2. Kan du vise mig, hvordan det vil se ud med udgangsounkt i ovenstående to eksempler?
Du flytter linien "Loginkontrol lk;" ud til toppen af den cpp fil hvorfra du skal tilgå den.
Hvis du skal bruge den i mere end en cpp fil skal du kun have den i en cpp fil, og så lave en: "extern Loginkontrol lk;" i en headerfil, sansynligvis den hvor du har defineret class'en.
Jeg får sikkert brug for din hjælp en anden gang, så vær så god ;)
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.