[C con Clase] Referencias a variables

Facundo Curti facu.curti en gmail.com
Sab Abr 18 19:45:52 CEST 2020


Eso es porque estás devolviendo una referencia, y copiando el valor a la
variable int que creaste. auto funciona en este caso, porque esta creando
una referencia a int, no un int.

Para solucionarlo, a no debería ser un int, debería ser una referencia o un
puntero a int ;)


El sáb., 18 de abril de 2020 06:35, User <usuarioanonimomysql en gmail.com>
escribió:

> Hay una errata en mi anterior e-mail, el segundo código era sin 'auto', es
> decir, así:
>
>   int x;
>   int y;
>   int a = std::ref(x);
>   x = 9;
>   std::cout << "x, " << x << "!\n";
>   std::cout << "y, " << y << "!\n";
>   std::cout << "a, " << a << "!\n\n";
>   a = std::ref(y);
>   y = 7;
>   std::cout << "x, " << x << "!\n";
>   std::cout << "y, " << y << "!\n";
>   std::cout << "a, " << a << "!\n";
>
> El vie., 17 abr. 2020 a las 20:50, User (<usuarioanonimomysql en gmail.com>)
> escribió:
>
>> Hola,
>>
>> Estoy tratando de asignar el valor de una variable 'x' de tipo entero a
>> otra 'a' mediante una referencia y posteriormente hacer que el valor de
>> otra variable 'y' se asigne a esa variable 'a' también mediante referencia.
>>
>> He visto que esto se puede hacer de esta manera (en C++11):
>>
>>   int x;
>>   int y;
>>   auto a = std::ref(x);
>>   x = 9;
>>   std::cout << "x, " << x << "!\n";
>>   std::cout << "y, " << y << "!\n";
>>   std::cout << "a, " << a << "!\n\n";
>>   a = std::ref(y);
>>   y = 7;
>>   std::cout << "x, " << x << "!\n";
>>   std::cout << "y, " << y << "!\n";
>>   std::cout << "a, " << a << "!\n";
>>
>> La salida sería:
>>
>> x, 9! y, 0! a, 9! x, 9! y, 7! a, 7!
>>
>> Lo cual me parece lógico.
>>
>> Pero yo pensaba que esto lo podría hacer sin usar 'auto', es decir, así:
>>
>>   int x;
>>   int y;
>>   auto a = std::ref(x);
>>   x = 9;
>>   std::cout << "x, " << x << "!\n";
>>   std::cout << "y, " << y << "!\n";
>>   std::cout << "a, " << a << "!\n\n";
>>   a = std::ref(y);
>>   y = 7;
>>   std::cout << "x, " << x << "!\n";
>>   std::cout << "y, " << y << "!\n";
>>   std::cout << "a, " << a << "!\n";
>>
>> Pero en este caso la salida es esta:
>>
>> x, 9! y, 0! a, 0! x, 9! y, 7! a, 0!
>>
>> Mi pregunta es, ¿siempre hay que usar 'auto' para tipos simples como
>> 'int' o si por el contrario tenemos un tipo que por ejemplo es una clase
>> funcionaría sin 'auto'?
>>
>> Saludos,
>>
>> User.
>>
>>
>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Libre
>> de virus. www.avast.com
>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>> <#m_-2906991473236579581_m_-2241250398602911455_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
>
> http://mail.listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20200418/5b526540/attachment.html>


Más información sobre la lista de distribución Cconclase