Je voudrais faire quelque chose comme ça (je suis conscient que ce ne sera pas compilé):C++ - utiliser dynamiquement référence ou variable locale
struct Container{
vector<int> storage;
};
float foo(Container* aContainer){
if(aContainer!=NULL)
vector<int>& workingStorage=aContainer->storage;
else
vector<int> workingStorage;
workingStorage.reserve(1000000);
....use workingStorage to calculate something......
return calculated_result;
}
Donc - si je passe un conteneur à la fonction , je veux que la fonction utilise le vecteur dans le conteneur pour travailler avec au lieu d'une variable locale. Si aucun conteneur n'est fourni, il doit utiliser une variable locale.
bien sûr, je pourrais juste à la fin de la fonction copier la variable locale à la mémoire du conteneur, mais ce n'est pas ce que je veux faire.
Merci!
+1: Je vais vous suggérons d'utiliser un pointeur, car cela est un cas d'utilisation où les références ne coupent pas (ils ne sont pas des variables). Mais j'aime vraiment cette solution :-) –
@James: Vous avez souligné à juste titre sur ma réponse (maintenant supprimée) que vous ne pouvez pas lier une référence à une variable temporaire. Mais l'expression ternaire de votre code n'évalue-t-elle pas également une variable temporaire? –
@Oli: Non; c'est pourquoi je crée d'abord 'local_storage'; il est toujours créé, qu'il soit utilisé ou non. –