Konstante Felder in Klasse
-
Hallo,
wie kann ich in einer Klasse ein konstantes Feld als anlegen. Also z.B. ein konstantes in Array?
Und noch etwas anderes. Sollte man für konstanten lieber konstanten verwenden, oder macros?Danke
-
Die erste Frage hab ich nicht verstanden.
Zum zweiten: auf jeden Fallconst, da die Konstante so einen Typ hat.
-
Du kannst in einer Klasse genauso eine Konstante anlegen, wie wo anders auch.
class Fubar { const int i; };Da aber eine objektspezifische Konstante keinen Sinn macht, werden Klassenspezifische-Konstanten meist als static const deklariert.
-
hiho,
Also für ein konstantes Array als Attribut fällt mir grad dies hier ein.
Ob das nun gut oder schlecht ist hmm... mal schauen was die anderen dazu schreiben

#include <iostream> using namespace std; class Array_Foo { public: int ar[5]; Array_Foo(const int (&ar)[5]) { for(int i=0; i<5; i++) { this->ar[i] = ar[i]; } } }; class Foo { public: const Array_Foo ar; Foo(const int (&ar)[5]) : ar(ar) {} }; int main() { const int ar[] = {1,2,3,4,5}; Foo f(ar); for(int i=0; i<5; i++) { cout << endl << f.ar.ar[i] << endl; } system("pause>nul"); return 0; }
-
Janjan schrieb:
Da aber eine objektspezifische Konstante keinen Sinn macht
Warum macht sie keinen Sinn? Ich kann ja Attribute haben, die sich während der Lebenszeit eines Objekts nicht ändern, aber die trotzdem bei jedem Objekt unterschiedlich sind. Ist ähnlich wie mit Referenzen als Member.
Allerdings kommt diese Situation ziemlich selten vor, alleine schon weil der Zuweisungsoperator nicht mehr intuitiv überladen werden kann.