Klassen von mehreren Funktionen aufrufen
-
Hallo,
wie kann ich eine Klasse von mehreren Funktionen aufrufen, ohne dass die Klasse in jeder Funktion neu erstellt und gelöscht wird.
Bsp:#include <iostream>
using namespace std;class Counter
{
public:
AddEins();
get_Zahl();
public:
int Zahl;
};Counter::AddEins()
{
Zahl++;
}Counter::get_Zahl()
{
return Zahl;
}int Funktion_1();
int Funktion_2();int main()
{
Counter BeispielKlasse;
int i;
Funktion_1();
Funktion_2();i = Beispielklasse.get_Zahl;
cout << i << endl;return 0;
}int Funktion_1()
{
Beispielklasse.AddEins(); // mein Klasse soll auch in den Funktionen ver-
} // wendet werden.int Funktion_2()
{
Beispielklasse.AddEins();
}Bsp. Ende
Für Antworten bedanke ich mich im vorraus.
C++Genie*
*Der Name entstand, weil "Mathegenie" schon belegt war.
-
Bitte Code-Tags benutzen!
Es gibt mehrere Möglichkeiten:
1. Member der Klasse Counter static machen
2. Referenz des Counters an die Funktionen übergeben
3. Singleton-Pattern
Ist aber wahrscheinlich nicht die "richtige" LösungMache dir am besten auch noch den Unterschied zwischen Klasse und Objekt klar.
-
Grob gesagt: Eine Klasse definiert nur das Verhalten beliebiger Objekte - um die MEthoden nutzen zu können, benötigst du ein konkretes Objekt - woher du das bekommst, ist dem Compiler egal (aber die lokalen Variablen der main() sind in anderen Funktionen so nicht verfügbar).
PS: Es wäre übrigens nützlich, vollständige Funktionsdeklarationen anzugeben - inklusive Ruckgabetyp

-
@C++Genie
Für dein Problem ist folgendes die einfachste Lösung.filmor schrieb:
2. Referenz des Counters an die Funktionen übergeben
Und noch zwei Tipps:
Bis auf ctor/dtor muss eine Funktion einen Rückgabetyp haben, und sei es nur void.
AddEins();Ist zB keine korrekte Deklaration einer memberfunktion.
Achte auf Gross-/Kleinschreibung, BeispielKlasse != Beispielklasse.