<div dir="ltr">gracias <br>fue de mucha ayuda<br><br><br><div class="gmail_quote">El 16 de octubre de 2008 13:46, Steven Davidson <span dir="ltr"><<a href="mailto:srd4121@njit.edu">srd4121@njit.edu</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hola Pedro,<div><div></div><div class="Wj3C7c"><br>
<br>
Pedro Mateo wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
tengo esta funcion<br>
void funcionX(Clase* b){<br>
}<br>
pero quiero llamarta de esta manera<br>
functionX(123) para que tal operacion pueda ser compilada tengo creo que seria necesaria sobrecargar un operador global de modelado (o conversion)<br>
que el compilador pueda utilizar para resolver la conversion de un<br>
int a un Clase*<br>
es posible?<br>
como lo se haria?<br>
<br>
</blockquote>
<br></div></div>
No es posible crear una conversión de esta manera. Las conversiones personalizadas sólo se pueden hacer dentro de una clase. Por ejemplo,<br>
<br>
class A<br>
{<br>
private:<br>
int num;<br>
<br>
public:<br>
...<br>
operator int() { return 5+num; }<br>
};<br>
<br>
Ahora podemos convertir de un objeto 'A' a un entero. Por ejemplo,<br>
<br>
void func( int n )<br>
{<br>
cout << n;<br>
}<br>
<br>
int main()<br>
{<br>
A obj(10);<br>
<br>
func( obj );<br>
cout << endl;<br>
...<br>
}<br>
<br>
<br>
En tu caso, quieres convertir de 'int' a 'Clase *'. Obviamente, no existe tal conversión en la gramática de C++. Sinceramente, no estoy seguro de cómo sería la conversión que quieres implementar, pero sugiero sobrecargar la función 'funcionX()'. Por ejemplo,<br>
<br>
void funcionX( Clase* b );<br>
void funcionX( int n );<br>
<br>
<br>
Supongo que podrías crear otra clase intermediaria donde implementar la conversión. Por ejemplo,<br>
<br>
class Clase { ... };<br>
<br>
class Temp<br>
{<br>
public:<br>
int num;<br>
Temp( int n ) : num(n) {}<br>
<br>
// Haz la conversión de 'int' a 'Clase *'<br>
operator Clase *() { ... }<br>
};<br>
<br>
Y luego al usar esta clase, haríamos esto:<br>
<br>
funcionX( Temp(123) );<br>
<br>
Los pasos que hacemos son:<br>
1. Instanciar un objeto temporal de 'Temp': Convertir de 'int' a 'Temp'.<br>
2. Convertir de 'Temp' a 'Clase *'<br>
3. Invocar 'funcionX()' con un 'Clase *' como argumento.<br>
<br>
<br>
Espero que esto te ayude.<br>
<br>
Steven<br>
<br>
<br>
_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net" target="_blank">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</blockquote></div><br></div>