Si yo quisiera hacer lo siguiente:
CEjemplo a,*b;
xx.Fijar(a);
xx.Fijar(B);
Debería definir los siguiente métodos:
class xx {
...
void Fijar(CEjemplo *nombre);
void Fijar(CEjemplo &nombre);
...
}
¿Hay alguna forma de escribir sólo 1 de estos métodos y que me acepte los dos tipos de llamada que he puesto arriba?
OJO, no me sirve esto:
CEjemplo a,*b;
xx.Fijar(*a);
xx.Fijar(B);
Y ahora otra duda:
Me gustaría crear esta función para sustituir al sprintf:
void Formato(const char *formato,...)
{
va_list marker;char *tmp=new char[32000];
va_start( marker, formato );
sprintf(tmp,formato,*marker);
...
delete tmp;
}
Así en mi programa la podría llamar como un miembro de una función. Sin embargo cuando la llamo..
xx.Formatear("%d,%2.2f",10,5.5f);
¡sólo me coge bien el 1er parámetro!
¿Porqué?
Muchas Gracias
[ Este Mensaje fue editado por: Drácula el 2002-03-26 00:08 ]
[ Este Mensaje fue editado por: Drácula el 2002-03-26 00:09 ]
Hola Drácula!
Creo que lo que quieres hacer en tu primera cuestion, no se puede hacer. Lo mas aproximado es lo que tu mismo has dicho, eso de cuando es un puntero, ponerle el asteristo delante y pasarlo como referencia.
Sobre lo de la elipsis, nunca lo he provado como tu lo haces, pasandole el marker al sprintf. Yo uso la funcion del C "vsprintf"; le pasas un puntero char como destino, un const char como origen y finalmente, el marker. Tambien he visto que haces el va_end( marker ), pero quizas te lo hayas dejado al escribirlo en el foro :sonriendo:
En fin, no se ayudarte de otra forma.
Espero que sea eso.
Un saludete!!!
< MChiz >
Pudes hacer...
CEjemplo a,*b;
xx.Fijar(&a);
xx.Fijar(B);
Debería definir los siguiente métodos:
class xx {
...
void Fijar(CEjemplo *nombre);
...
}
Pasas siempre por referencia y te comes una funcion. O si no quieres puedes añadir
void Fijar(CEjemplo& nombre);
Fijar(&nombre);
}
Y asi te ahorras de escribir la funcion dos veces.
En la segunda cuestion yo uso:
void KKFont::draw(int x, int y, char *text, ...)
{
va_list ap;
char buffer[1024];
va_start(ap, text);
vsprintf(buffer, text, ap);
va_end(ap);
...
}
Y me funciona de perlas
Otra solucion seria echar mano al string del STL
void KKFont::draw(int x, int y, std::string messsage)
{
...
}
y llamarlo con font->draw(0, 0, std::string("No puedorl no puedorl: ") + std::string(m_FramesPerSecond) + std::string("Me cago en tus muelars!");
[ Este Mensaje fue editado por: samsaga2 el 2002-03-26 08:45 ]
Muchas gracias por vuesta ayuda. Lo probaré esta noche, a ver que tal funciona!