Mit Retun 2 verschieden texte zurück geben



  • Also:
    return text1 und text2;
    ich bekomme nur
    return text 1;
    alle versuche mit && oder ähnlichem scheitern

    vielen dank.



  • Hallo @bardson,
    wenn Du mehrere Texte als std:.string aus einer Funktion/Methode liefern möchtest, wär eine Lösung, einen std::vector<std::string> zu liefern.



  • ich habe mich falsch ausgedrück also es sieht so aus (stak gekürzt)

    switch (FEAT_INDUSTRIES, SELF, coal_mine_produce_D, [

    switch (FEAT_INDUSTRIES, SELF, coal_mine_prodlevel_ND, LOAD_PERM(15)) { // das klapt
    .......
    prodtype

    ]) {
    return coal_mine_prodlevel_ND;

    // dieses return sollte auch aufrufen

    coal_mine_produce_D, [

    also in etwa
    return coal_mine_prodlevel_ND /* keine ahnung was hier stehen muss*/ coal_mine_produce_D;

    Ich habe keine ahnung von C++ aber mit copy und paste und trial and error bekomme ich einiges hin.
    vielen dank


  • Gesperrt

    Die neue Art des Spams.

    @bardson Das geht mit einem vector oder mit einer struct (die Pointer hält).


  • Mod

    Hallo bardson, du brauchst Hilfe? Deine Frage ist sehr schwer zu lesen, da kann man schwer gute Antworten geben.

    Mehrere Dinge zurück zu geben geht auf vielerlei Art und Weise. Prinzipiell kann man mit allen ungefähr das gleiche erreichen, es ist eher eine Frage, was man über die Funktionsweise ausdrücken möchte. Da dein Code so unlesbar ist, kann man schwer sagen, was für dich richtig wäre. Ein paar Ideen:

    • Man will zwei Dinge zurück geben, die logisch gar nichts miteinander zu tun haben: Zwei Referenzparameter, eventuell auch ein pair.
    • Man will zwei Dinge zurück geben, die logisch etwas miteinander zu tun haben, aber nicht mehrere Exemplare des gleichen Konzepts sind: Eine komplexe Datenstruktur, die Felder für die beiden Dinge enthält, z.B. ein pair. Die dann als Rückgabewert oder Referenz.
    • Man will ganz genau zwei Instanzen des gleichen logischen Konzepts zurück geben: Entweder zwei Referenzparameter; oder ein array<2> als Rückgabewert; oder ein pair; oder eine komplexe Datenstruktur mit beiden Instanzen (ein Array<2> oder ein pair wären solche komplexen Datenstrukturen, aber vielleicht hat man ja noch mehr Wissen, das man ausdrücken möchte)
    • Man will beliebig viele Instanzen des gleichen logischen Konzepts zurück geben, es sind bloß zufällig zwei: Hier muss ich meinen Vorrednern leider Widersprechen. Ein Vector drückt zwar dieses Konzept aus, aber es ist ungewöhnlich einen Vector zurück zu geben, außer das ist eine interne Funktion, von der man nur selber Gebrauch macht und genau weiß, dass man immer einen Vector möchte. Denn es gibt sehr viele Alternativen, wie man das Konzept "beliebig viele gleichartige Dinge" ausdrücken kann, und es ist unschön dem Nutzer vorzuschreiben, was er nehmen soll. Da lässt man sich stattdessen das gewünschte Ziel per Referenz oder per Iterator übergeben (also jeweils als Template, weil man nicht weiß was kommen wird), und schreibt seine Ergebnisse da rein.
    • Alle diese Methoden sind jeweils auch in einer komplexen Datenstruktur unterbringbar, falls man mehr über das logische Konzept ausdrücken möchte, als nur "zwei/mehrere Dinge". Oder ein typedef auf eine der Standardstrukturen wie pair/array, wenn man zwar keine zusätzliche Funktionalität hat, aber das logische Konzept besser beschreiben möchte.


  • a) das, was @SeppJ sagt
    b) weil hier im ersten Beispiel von Texten die Rede war: vielleicht einfach text1 + text2 (also strings aneinanderhängen, sofern das denn std::string-Variablen sind?) Was soll überhaupt der Return-Typ sein? Oder sind deine texte char-Arrays? Dann sowas wie strcat_s?


Anmelden zum Antworten