Bin gerade dabei mich in Klassen einzuarbeiten. Leider scheine ich irgendwas schon bei diesem einfachen Beispiel (Klasse mit zwei Funktionen: 1. erhöht private Variable um 1 2. gibt diese zurück). Sobald ich versuche die Variable zu erhöhen bekomme ich ne Fehlermeldung EAccessViolation. Hier mein Code: Header:
C++:
#ifndef TestklasseH #define TestklasseH class Testklasse { public: Testklasse(); void erhoeheZaehler(); int Ausgabe();
Danke daran lag es. Hab schon was Neues: Wo muss/kann ich eine Konstante erstellen? Hab probiert direkt nach private: const int Faktor=2; zu erstellen doch erhalte ich da die Meldung das ich das Klassenelement hier nicht initialisieren kann.
Eine Konstante ist aber besser als static zu deklarieren:
C++:
class Klasse { staticconstint eine_konstante = 4711; ... };
Zwar geht das auch in der initialisiererliste des Constructors (dann nicht static), allerdings: wozu Speicher veschwenden? -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21)
@virtual warum wird sonst speicher verwendet. Leuchtet mir nicht ein es sei denn du meinst wenn man mehrere Objecte einer Klasse hat. -- ...fleißig wie zwei Weißbrote
Ja, ich hatte mehrere Instanzen vor Augen. Tatsächlich ist das mit dem Speicher noch nicht mal das Hauptproblem: die Variante mit dem ctor birgt eben die Gefahr, daß man sich auch mal vertippen kann:
am besten entweder gleich ne std::string verwenden oder einen buffer nehmen der hinreichend gross ist. wobei das bestimmt in deinem fall auch nicht sinnvoll ist den Pfad mit zu übergeben. der ist bestimmt besser als membervariable aufgehoben. wenn du den aufwand nicht scheuest könntest du bei jeder pfadänderung auch neuen speicher anfordern und den alten freigeben -- ...fleißig wie zwei Weißbrote
Es geht dabei eigentlich nur darum, das jemand die Funktion direkt aufruft und ich für den Rückgabewert (heißt das eigentlich so wenn man dafür die Aufrufparameter nutzt?) eben den Aufrufparameter nutzen soll.