typedef array an Klassenfunktion übergeben
-
Hallo allerseits,
ich hab hier mal ne Frage zu typedefs und wie ich dann ein solches array übergeben kann. Ok etwas schlechte Formulierung.....
Naja gut! Also folgender Versuch:typedef int MyArryTyp; typedef MyArryTyp array[1600] MyArry; void main(void){ MyArry array; DoIt(array); } void DoIt(MyArry* pArr){ int i; for(i = 0; i < (sizeof(MyArry) / sizeof(MyArryTyp)); i++){ pArr[i] = 0; // z.B. } }Das klappt ja so wenn alles in der main ist...
Bei mir sieht das ganze jetzt so aus:
- generieren des arrays in dermain()(main.cpp)
- array übergeben an Klassenfunktionvoid myClass::funktion()(myClass.cpp)wenn ich jetzt das typedef in der main mache, dann kennt meine Klasse dieses type nicht...
Wie mach ich das dann am besten?
Muss nicht unbedingt mit typedef sein, aber das schien mir ganz gut weil man dann später die Größer beliebig änderbar ist ohne was am restlichen Code zu ändern....MFG
-
Meinst du so?
typedef int datentyp; typedef datentyp arraytyp[100]; void foo(arraytyp a){}; int main() { arraytyp a; foo(a); }Du solltest dir aber vielleicht mal die Sprachmittel von C++ näher angucken: Konstanten, Klassen, Vektoren.
-
SeppJ schrieb:
Meinst du so?
typedef int datentyp; typedef datentyp arraytyp[100]; void foo(arraytyp a){}; int main() { arraytyp a; foo(a); }Danke erstmal für die schnelle Antwort!
Aber das ist so wieder alles in der main.cpp
ich meinte, dass die aufgerufene Funktion, hier
foo()in einer Klasse steht. Das heißt in der main wird aufgerufenmyClass.foo(arraytyp a);Wenn das so ist, dann kennt die Klasse den arrytyp nicht und es gibt einen Error.....
-
Pack dein typedef in einen Header, den du immer dort includierst wo du das typedef brauchst
-
irgendwer schrieb:
Pack dein typedef in einen Header, den du immer dort includierst wo du das typedef brauchst
Das heißt ich pack meinen typedef in myClass.h ???
So?// myClass.h #pragma once typedef int datentyp; typedef datentyp arraytyp[100]; class myClass{ public: void foo(arraytyp); private: //Attribute ... }; // myClass.cpp #include "myClass.h" myClass::myClass(){ } void myClass::foo(arraytyp a){ // Funktionskörper }
-
Mufasa schrieb:
irgendwer schrieb:
Pack dein typedef in einen Header, den du immer dort includierst wo du das typedef brauchst
Das heißt ich pack meinen typedef in myClass.h ???
So?Geschickterweise könntest du auch sowas wie typedef.h machen, falls die Definition in mehr als einer Datei gebraucht wird.