Avatar billede lowjoe Nybegynder
03. juni 2002 - 18:35 Der er 9 kommentarer og
1 løsning

static i en stor klasse??

jeg skal bruge 2 variabler i en klasse som privat data som skal beholde deres værdi når jeg forlader deres funktion. hvad skal jeg helt præcis have med når jeg erklærer dem??

hurtig svar tak!
Avatar billede lowjoe Nybegynder
03. juni 2002 - 18:38 #1
jeg får link fejl når jeg kompilere ved nuværene opsætning!!
Avatar billede kamikaze Nybegynder
03. juni 2002 - 20:01 #2
Prøv at poste din klasse her.
Avatar billede lowjoe Nybegynder
03. juni 2002 - 20:03 #3
private :
static int  nr_s;
static int  ns_s;

og så skal de bruges i en funktion i klassen
Avatar billede kamikaze Nybegynder
03. juni 2002 - 20:05 #4
Du kan sagtens have statiske variable i en klasse - de skal bare initialiseres først. Flg. illustrerer hvordan:

#include <iostream.h>
#include <conio.h>

class TEST
{
public:
    TEST();
    ~TEST();
    static int StaticCount;
    int ThisCount;
};

int TEST::StaticCount = 0;

TEST::TEST()
{
    ThisCount = StaticCount++;
}

TEST::~TEST()
{
}

void main()
{
    TEST test1;
    TEST test2;
    TEST test3;

    cout << test1.ThisCount << endl;
    cout << test2.ThisCount << endl;
    cout << test3.ThisCount << endl;

    getch();
}
Avatar billede lowjoe Nybegynder
03. juni 2002 - 20:10 #5
hvor skal denne sætning placeres: int TEST::StaticCount = 0;

og hvad gør jeg hvis en anden aktivere en funktion i min klasse som så aktivere de andre, hvor skal den sætning så skrives??

måske er jeg dum, men....

tak for hjælpen intil videre!!
Avatar billede kamikaze Nybegynder
03. juni 2002 - 22:43 #6
Du gør som ovenstående. int TEST::StaticCount = 0; skal bare stå et sted efter class definitionen (det er ligegyldigt om du gør det i header eller cpp filen). Og den skal bare stå udenfor funktioner.
Avatar billede kamikaze Nybegynder
03. juni 2002 - 22:46 #7
Hmmmm....Mht. hvad du gør hvis "...en anden aktivere en funktion i min klasse ...", jamen så er den jo initialiseret. Eller med andre ord:
Uanset hvorfra du kalder en metode fra klassen, så er filen jo inkluderet (ellers kan du ikke bruge klassen), og dermed er linien også kompileret.
Avatar billede kamikaze Nybegynder
03. juni 2002 - 22:47 #8
Ovenstående kode kører i MSVC++ konsol applikation :-)
Avatar billede lowjoe Nybegynder
04. juni 2002 - 00:13 #9
bukker og takker :-)
Avatar billede kamikaze Nybegynder
04. juni 2002 - 14:36 #10
Takker for points :-)
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