besonderer Rückgabewert einer Funktion



  • hallo alle,

    ich habe eine Frage und zwar wie kann ich eine Variabel vom Typ AnsiString in einer AnsiString Funktion so zurückgeben, das alle ihre Inhalte zurückgegeben werden. Entschuldigt die Ausdrucksweise, konnte mich nicht präzieser ausdrücken. Folgendes Beispiel:

    AnsiString text()
    {
    AnsiString out;
    AnsiString text1 = "du";
    AnsiString text2 = "bist";
    out[0] = text1;
    out[1] = text2;

    return out;
    }

    Aufgerufen wird das dann so:
    AnsiString ausgabe;

    ausgabe = text();

    mein ziel ist es das der inhalt von ausgabe[0] dann "du" ist,
    und der von ausgabe[1] "bist" ist.

    ich hoffe das jemand Lust hat sich damit auseinanderzusetzten, und mir vllt vermitteln kann was ich wissen muss, damit das funktioniert. Danke



  • du musst einen AnsiString Pointer zurückgeben:

    AnsiString* test() { ... }

    dann kannst du das so aufrufen:
    AnsiString* blub = test();
    cout << blub[0] << blub[1];

    bei dieser variante musst du allerdings in der Funktion test Speicher für das Array reservieren und nach aufruf der Funktion den Speicher wieder leeren.

    besser wäre sowas:

    void test(AnsiString* s) {
        ...
        s[0] = "bla";
        s[1] = "blub";
    }
    

    hier übergibst du schon ein fertiges Array und die Funktion schreibt dann die benötigten Sachen rein:

    AnsiString asArray[2];
    test(asArray);
    cout << asArray[0] << asArray[1];
    
    delete[] asArray;
    


  • ahh, vielen dank, und wie schnell das ging, super



  • Hallo

    Um die rohen C-Arrays und die manuelle Speicherverwaltung zu vermeiden ist es besser C++ Container zu verwenden

    #include <vector>
    ...
    void test(std::vector<AnsiString>& s)
    {
      s.push_back("bla");
      s.push_back("blub");
    }
    ...
    std::vector<AnsiString> asArray;
    test(asArray);
    cout << asArray[0] << asArray[1];
    

    bis bald
    akari


Anmelden zum Antworten