Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Duda de C++

Iniciado por Drácula, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Drácula

                                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 ]                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

MChiz

                                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 >                                

samsaga2

                                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 ]                                

Drácula

                                Muchas gracias por vuesta ayuda. Lo probaré esta noche, a ver que tal funciona!                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.