2016-04-23 14 views
0

Wie kann ich diese Rückgabe x und y, anstatt nur einer von ihnen machen? In meiner Location-Klasse habe ich die Daten mit den Namen x_pos und y_pos geschützt.Wie man einen Ort als x, y, z zurückgibt

void Location::getXY(double& x, double& y) const { 
    x_pos = x; 
    y_pos = y; 
    return x, y; 
} 
+0

Würde ein std :: pair oder std :: tuple tun? Sonst können die Referenzen nur Variablen sein? – Niall

+2

Gibt ein 'std :: pair' zurück? Gibt ein 'std :: tuple' zurück? Gibt ein 'std :: array' zurück? Gibt einen 'std :: vector' zurück? Eine Struktur zurückgeben? –

+0

Oder, da Sie 'x' und' y' als nicht konstante Referenzen übergeben, einfach zuweisen? –

Antwort

1

Sie können eine std::pair zurückgeben. Ich gehe davon aus, dass Sie nach Wert und nicht durch Verweis hier zurückkehren möchten.

Obwohl ich beachten muss, dass diese Funktion keinen logischen Sinn ergibt, geben Sie Werte zurück, die Sie übergeben haben, ohne sie zu ändern.

+0

Sie brauchen hier nicht 'decltype (auto)', 'auto' ist genug. – skypjack

0

Sie haben wahrscheinlich

gemeint
void Location::getXY(double& x, double& y) const { 
    x = x_pos; 
    y = y_pos; 
} 

Auf diese Weise können Location speichern ‚s interne x_pos und y_pos in vorgesehenen Stellen. Sie müssen return nichts von einer Funktion void zurückgeben (eigentlich können Sie nichts als void selbst zurückgeben). Wie bereits erwähnt, könnte die Rückgabe eines std::pair eine bessere Idee sein.

Verwandte Themen