# zwei werte zurückgeben



## tommy07 (10. Juni 2005)

Hallo,
wie schaffe ich es, dass eine Funktion zwei Werte zurückgibt?

Beispiel:

wenn ich will, dass a zurückgegeben wird, schriebe ich einfach 

```
return(a);
```

Was mach ich, wenn ich auch noch b zurückgeben will?


tommy


----------



## Tobias K. (10. Juni 2005)

moin


Das geht so nicht, am besten machst du das über Pointer:

```
void funk(int *a, int *b)
{
    *a++;
    *b++;
}

int main()
{
    int x = 1;
    int y = 2;

    funk(&x, &y);
    
    return 0;
}
```


mfg
umbrasaxum


----------



## Endurion (10. Juni 2005)

In C/C++ geht das direkt gar nicht. Du kannst aber

A) Ein Struct nehmen, wo beide Parameter reingepackt werden
B) mit Referenzen arbeiten:


```
bool HoleSchnittPunkt( const int a, const int b, int& returnx, int& returny )
{
  // schnippelschnappel
  if ( wirhabeneinenschnittpunkt )
  {
    returnx = 1;
    returny = 2;
    return true;
  }
  return false;
}
```


----------



## charlieb (10. Juni 2005)

Hi,

also wenn man nur 2 Werte übergeben möchte kann man das Template pair<Typ, Typ> nehmen, sollten es jedoch mehr sein/werden können dann ist ein vector vielleicht besser.
Eine Erklärung gibts z.B. hier 

Grüsse
CB


----------



## Tasm-Devil (12. Juni 2005)

Ich würde dir auch Referenzen nahe legen (das mache ich ganz gerne)

Ungetestetes Beispiel:


```
void SWITCH (int A, int B, int &C, int &D)
{
    C = A;
    D = B;
}

int WERTA = 10;
int WERTB = 20;
int WERTC;
int WERTD;
SWITCH(WERTA,WERTB,WERTC,WERTD);
```


----------



## Tobias K. (12. Juni 2005)

moin


*amkopfkratz* was hat deine Funktion mit Werte "switchen" zu tun? Nicht das es falsch ist, aber mich irritiert der Funktionsname.
Aber hast mir wenigstens die Möglichkeit gegeben mal was auszuprobieren...


mfg
umbrasaxum


----------



## Tasm-Devil (12. Juni 2005)

ich weiß auch nich wie ich auf SWITCH kahm ? *kopfgegenbaumhau*


----------



## Tobias K. (12. Juni 2005)

moin


*nochmalamkopfkratz* dürfen Funktionen überhaupt switch heissen? Ich glaub nicht....


mfg
umbrasaxum


----------



## Flegmon (12. Juni 2005)

umbrasaxum hat gesagt.:
			
		

> moin
> 
> 
> *nochmalamkopfkratz* dürfen Funktionen überhaupt switch heissen? Ich glaub nicht....
> ...



solange sie nicht switch (komplett klein) geschrieben sind ja.
Es ist aber eher ungünstig sie so zu benennen.


----------



## Tasm-Devil (17. Juni 2005)

ok ok is ja mein Fehler. Ich komm übrigends grad aus Prag. Schöne Stadt. Billige Kippen und andere Sachen...
gut gut out of Topic


----------



## Kachelator (17. Juni 2005)

> also wenn man nur 2 Werte übergeben möchte kann man das Template pair<Typ, Typ> nehmen, sollten es jedoch mehr sein/werden können dann ist ein vector vielleicht besser.



Wenn es mehr als zwei sein sollen, kann man sehr gut boost::tupel verwenden.

Die Boost-Template-Library kann ich ohnehin jedem empfehlen. Bietet viele nützliche Klassen. Zu beziehen hier (für lau): http://www.boost.org


----------

