2017-07-07 2 views
-1

Quel est le problème dans l'utilisation de référence ci-dessous et quelle est l'utilisation correcte. Je veux attribuer une référence à un vecteur de plus petite taille.'sm' n'a pas été déclaré dans cette portée

vector<int> R = {3,4,6,3,6,2,3}; 
vector<int> P = {5,9,8}; 

     if (P.size()>=R.size()) 
      vector<int>& sm = R; 
     else 
      vector<int>& sm= P; 

Répondre

7

Il n'y a rien de mal dans cette partie. Mais vous ne pouvez pas utiliser sm plus tard, car sa portée sera la partie if ou else seulement.

Vous devez utiliser quelque chose comme ceci:

vector<int>& sm = (P.size()>=R.size()) ? R : P; 
+0

Ou déclarer avec R et P, puis l'initialiser dans le if-else – Shirkam

+0

@Shirkam Cela ne fonctionnera pas, car il est une référence. La référence doit être initialisée et ne peut pas être redirigée vers un autre objet –

+0

Oh, j'ai raté ça &. Merci pour votre anotation. – Shirkam