<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>