[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