Sie kopieren die std::vector
Instanzen in die generateTargets
Funktion, daher werden Sie keine Änderungen an den ursprünglichen Vektoren von der Seite des Anrufers sehen.
Die einfachste Lösung besteht darin, sie durch Verweis statt weitergeben müssen:
void generateTargets(
std::vector<glm::vec3>& positions,
std::vector<glm::quat>& orientations,
int targetNum) { // ...
Andernfalls könnten Sie eine std::tuple
von Vektoren Rück Funktion Reinheit zu erhalten. Dies wird sehr wahrscheinlich keine zusätzlichen Kosten aufgrund move Semantik und RVO.
auto generateTargets(
std::vector<glm::vec3> positions, std::vector<glm::quat> orientations, int targetNum)
{
// ...
return std::make_tuple(std::move(positions), std::move(orientations));
}
Verbrauch:
std::vector<glm::vec3> positions(targetNum);
std::vector<glm::quat> orientations(targetNum);
auto result = generateTargets(std::move(positions), std::move(orientations), targetNum);
Sie verwenden 'Aufruf von value', verwenden Sie' Aufruf von reference' statt. Sonst kopieren Sie Ihre Parameter, anstatt eine Referenz zu übergeben, wie Sie es beabsichtigt haben. – Nidhoegger