Variable von Funktion einer Klasse definieren
-
Hallo,
ich will von einer Funktion, einer Klasse, eine Variabele in der Klasse Definieren, wie muss ich das machen/* in der Header */ class TGame { public: void VraiabeleGenerieren (void); void VariabeleAbrufen (void); }; /* in der cpp */ void TGame::VraiabeleGenerieren (void) { int Bilder[3] = {1, 2, 3}; } void TGame::VariabeleAbrufen (void) { printf("%d", Bilder[1]); }Leider gibt es einen Error. Was muss ich noch tun, damit Bilder in die Klasse als Variabele geschrieben wird?
Stratege993
-
class TGame { private: int Bilder[3]; public: void VraiabeleGenerieren (void); void VariabeleAbrufen (void); }; /* in der cpp */ void TGame::VraiabeleGenerieren (void) { this.Bilder[0] = 1; this.Bilder[1] = 2; this.Bilder[2] = 2; } void TGame::VariabeleAbrufen (void) { //wir sind hier in C++ also bitte std::cout std::cout<<Bilder[0]<<Bilder[1]<<Bilder[2]<<std::endl; }Um Member zu füllen wie in deiner Generieren Methode, gibt es aber den Konstruktor, informier dich mal.
-
Die einzige Antwort die man hier geben kann ist wohl: lern programmieren. In jedem Buch zum Thema C++ werden Klassen abgehandelt.
Achja super Fehlerbeschreibung: "Leider gibt es ein Error". Mal von den Rechtsschreibfehlern in deinem Posting und Code abgesehen.
-
Das 2. Problem ist aber, das ich erst in der Funktion VraiabeleGenerieren (jetzt im konstruktor) mitbekomme wie groß das array ist.
Und danke für das Stichwort, hilft mir sehr.Stratege993
-
ist doch scheiß egal dann machs halt so
class TGame { private: int *Bilder; int size; public: Tgame(int s) { size = s; Bilder = new int[size]; } void VariabeleAbrufen (void); }; /* in der cpp */ void TGame::VariabeleAbrufen (void) { //wir sind hier in C++ also bitte std::cout std::cout<<Bilder[0]<<Bilder[1]<<Bilder[2]<<std::endl; }somit kannst du die größe dynamisch beim erstellen, festlegen

-
Und nicht vergessen, einen Destructor anzulegen, in dem "Bilder" wieder zerstört wird.
-
Oder gleich STL-Container benutzen.
P.S.:
Stratege993 schrieb:
Vraiabele
Das ist schon fast so gut wie die "quadratuaheln"

-
Das mit dem Vraiabele war ein Buchstabendreher.
Das mit "Bilder = new int[size];" geht aber leder nur bei 1 Dimensionalen Arrays, wie sieht es mit 2 Dimensionalen Arrays aus?
-
Stratege993 schrieb:
Das mit "Bilder = new int[size];" geht aber leder nur bei 1 Dimensionalen Arrays, wie sieht es mit 2 Dimensionalen Arrays aus?
Man kann es mit zwei Versionen machen:
int* array = new int[sizeX * sizeY];
Dies erspart einem das mühsame Arbeiten mit 2 dimensonalen Arrays, ist allerdings etwas weniger flexibel.
int** array = new int*[sizeY]; // Wir erstellen ein Array, welches Zeiger beinhaltet. // Man könnte diese Zeiger als die Zeiger auf die Zeilen betrachten. // Nun erstellen wir die Zeilen. for(int i = 0; i < sizeY; ++i) { array[i] = new int[sizeX]; }Vergiss aber die entsprechenden
delete[]s nicht!Wurde im übrigen schon den in der Standardbibliothek enthaltenen
std::vectorerwähnt?
http://www.cplusplus.com/reference/stl/vector/Grüssli