ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
17901
17901
EMPFEHLEN
-
Hallo zusammen
Ich versuche ein Array direkt zu beim deklarieren mit Werten zu füllen:
Doch der Copiler (Visual C++ express) gibt mir eine Fehlermeldung.Code :1
float fArray[] = { 0, 0.001, 0.003, 0.01};
Was ist falsch in meinem Code?
Danke für eure Hilfe!
LukeS
-
Ich hab den Fehler gefunden. Ich hab das Array in der Header-Datei für meine Klasse deklariert. Danach wollte ich das Array (wie oben beschrieben) im Konstruktor mit Werten füllen. Mir ist jetzt klar, dass es so nicht geht.
Doch ich hab trotzdem ein Problem:
Wenn ich das Array nur im Konstruktor erstelle und fülle, ist es in den anderen Methoden der Klasse nicht sichtbar.
Wie kann ich mein Array im Header deklarieren und dann im Konstruktor mit den Werten füllen? Ich hab vorläfig 126 Werte. Später evtl. mehr. Ich möchte die Werte also nicht einzeln ins Array eingeben.
gibt es einen effizienten Weg?
Danke für eure Hilfe!
LukeS
-
Du kannst es als "static" deklarieren und dann in der cpp-Datei initialisieren:
Code cpp:1 2 3 4 5 6 7 8 9
// .h class CMyClass { public: static float m_fArray[]; } // .cpp float CMyClass::m_fArray[] = { 0, 0.001, 0.003, 0.01};
Gruß
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
Danke für die Antwort!
Aber wenn ich das Array als static deklariere, wird es für jedes Objekt, das ich von meiner Klasse erzeuge das selbe sein.
Vorläufig ist das kein Problem, da ich nur ein Objekt erstelle. Aber es könnte schon noch sein, dass ich mehrere Objekte erzeugen muss.
Ich habe noch eine Idee: Ich erzeuge das Array in einer Methode und gebe einen Zeiger darauf zurück.
Ich habs aber nochnicht ausprobiert.
Danke nochmals für die Hilfe!
Gruss LukeS
-
Wird das Array in der Methode mit "float fArray[] = { ... }" erzeugt, gibst du einen Zeiger auf eine lokale Variable zurück, also keine so gute Idee.
Wenn du das Array für die einzelnen Objekte unterschiedlich haben willst, musst du es außerhalb der Klasse erzeugen und z.B. dem Kontruktor als Parameter übergeben und dann in eine (dynamische) Membervariable kopieren:
GrußCode cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
#include <iostream> class CMyClass { public: CMyClass(float fArray[]) { m_pfArray = new float[sizeof(fArray)]; memcpy(m_pfArray, fArray, sizeof(fArray) * sizeof(float)); } ~CMyClass() { delete [] m_pfArray; } float *m_pfArray; }; int main(int argc, char* argv[]) { float fArray[] = { 0, 0.001f, 0.003f, 0.01f }; CMyClass myClass(fArray); std::cout << myClass.m_pfArray[0] << std::endl; std::cout << myClass.m_pfArray[1] << std::endl; std::cout << myClass.m_pfArray[2] << std::endl; std::cout << myClass.m_pfArray[3] << std::endl; return 0; }
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
Danke für die Antwort.
Ich habe mir gedacht, dass ich in einer Methode das Array auf dem Heap erstelle (mit new) und dann einen Zeiger darauf zurückgebe?
Nur ist dann die Frage wie ich ein Array auf dem Heap erstellen und gerade mit den Werten füllen kann?
Danke euch allen für die Hilfe!
Gruss LukeS
-
Es scheint nicht zu funktionieren ein Array auf dem Heap zu erstellen und direkt mit werten zu füllen. Ich nehmn an, dass es daran liegt, dass man es beim Erzeugen eines Arrays auf dem Heap mit einem Zeiger zu tun hat.
Im Moment genügt mir die Lösung mit static. Der Rest war nur Neugier...
Danke nochmals euch allen!
Gruss LukeSGeändert von LukeS (05.12.06 um 12:02 Uhr)
-
"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
Ähnliche Themen
-
2-dimensionales Array initialisieren
Von Nunu008 im Forum C/C++Antworten: 3Letzter Beitrag: 01.12.09, 08:10 -
Array direkt in Methodenaufruf initialisieren
Von Thomas D im Forum Algorithmen & Datenstrukturen mit JavaAntworten: 3Letzter Beitrag: 20.04.08, 19:43 -
was ist hier falsch? array initialisieren
Von turndevil im Forum JavaAntworten: 2Letzter Beitrag: 10.05.04, 15:07 -
Array initialisieren
Von ParadiseCity im Forum Visual Basic 6.0Antworten: 6Letzter Beitrag: 28.03.04, 11:54 -
Array initialisieren und Inhalt zählen
Von Wolfsbein im Forum C/C++Antworten: 4Letzter Beitrag: 31.03.02, 21:10





Zitieren

Login






