Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » statischen Klassenvariablen Werte zuweisen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
27.12.2006, 16:38 Uhr
Lensflare



Hallo.

Wie kann ich statischen Klassenvariablen innerhalb der Klasse Werte zuweisen?

Ich habe folgendes probiert:

C++:
#include <stdio.h>

class Klasse
{
public:
  static void main()
  {
    z = 7;
    //...
  }

  //...

private:
  static int z;
};

int main()
{
  Klasse::main();
  getchar();
}



Nach dem erfolgreichen compilieren kommt eine Fehlermeldung im "Compiler and linker output" bei Dev-C++ 4

Code:
C:\WINDOWS\TEMP\ccZc87fb.o(.text$main__6Klasse+0x8):game_max.cpp: undefined reference to `Klasse::z'


Ich werde aus dieser Fehlermeldung nicht schlau. Wieso undefinierte Referenz?
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.12.2006, 16:57 Uhr
0xdeadbeef
Gott
(Operator)


...indem du die Variable nicht nur deklarierst, sondern auch instanziierst. Also:

C++:
#include <iostream> // C++ bitte. Zumindest cstdio wäre angebracht

class Klasse
{
public:
  static void main()
  {
    z = 7;
    //...
  }

  //...

private:
  static int z;
};

int Klasse::z;

int main()
{
  Klasse::main();
  std::cin.get();
}



--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.12.2006, 17:29 Uhr
Lensflare



Es erscheint mir irgendwie sinnlos, dass sie nicht schon mit der Deklaration der Klasse instanziiert wird.

Das bringt mich jedoch weiter. Danke.
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.12.2006, 17:45 Uhr
0xdeadbeef
Gott
(Operator)


Das ist mitnichten sinnlos. Normalerweise befinden sich Klassendeklarationen in Header-Dateien, und die werden u.U. in mehreren Modulen includet. Wenn du in jedem Modul ne eigene Instanz der Variable hättest, wüsste der Linker nachher nicht, welche er benutzen soll.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: