mehrere integer von einer prozedur zurückgeben(array?!)
-
hi,
also ich hab eine prozedur, die aufgerufen werden soll und mehrere werte zurückliefern soll...
wie mach ich das am besten? mit return kann man ja scheinbar nur einen wert zurückgeben, oder geht das auch mit einem array? und wie deklariere ich dann die funktion? oder ist das alles mist und man macht das ganz anders?grüsse steve
-
array geht nicht so einfach.
du könntest ein std::pair zurückgeben, einen std::vector, mit referenzen arbeiten, etc.#include <utility> #include <vector> using namespace std; std::pair<int,double> foo () { return make_pair(42,4.2); } vector<int> bar () { vector<int> tmp; tmp.push_back(1); tmp.push_back(2); tmp.push_back(3); return tmp; } void baz (int &a, char &b, double &c) { a = 1100; b = 'c'; c = 5.5; }
-
Ja du kannst ein Array zurückgeben, bzw. genaugenommen ist es nur ein Pointer
auf das erste Element des Arrays.
-
Hm, die Frage habe ich mindestens schon einmal beantwortet *glaub* - Suche oder FAQ schon probiert?
Wenn du mit Array eins mit Fenster Elementzahl zurückgeben willst, geht das nicht direkt (jaja, diese ganzen Array-Sonderregeln halt). boost::array ist ein kleiner Wrapper um Arrays, der das möglich macht -> www.boost.org
Wenn die Anzahl nicht feststeht, gibst du am besten einen std::vector zurück.
-
Wie wärs denn wenn du ein array in der funktion AUF DEM HEAP erstellen und dann den Pointer zurückgeben würdest?
-
Und wer räumt das wieder auf ?
-
genau:
int* tollefunktion( void ){return new int;} int main() { for(;;)delete tollefunktion(); }
Wer sowas ernsthaft benutzt und nicht einmal darauf Hinweise gibt(zb indem er die Funktion new_int() nennt) sollte lieber Lego spielen
Irgendwann vergisst man das löschen und schon haben die Java Anhänger wieder nen Grund zu lästern wie fehleranfällig C++ doch ist, weil man mal wieder ganz toll ein Speicherleck produziert hat.
Reicht schon das SDL_rotozoom sonen mist macht und ich mich da jedesmal drüber ärgere
-
hm danke für die antworten... aber ich glaube das gefällt mir alles net so ganz und ich machs anders
trotzdem danke!
steve
-
du musst ja nicht unbedingt das array zurück geben, du kannst ja ein array per pointer übergeben bekommen und da hinein schreiben
wenn du dich dran erinerst was parameter übergabe per pointer ist