Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] crear mi propias funciones....c++

Estas en el tema de crear mi propias funciones....c++ en el foro de C/C++ en Foros del Web. Hola señores (as) del foro, necesito saber como crear una función que me retorne un vector char y que tenga como parámetro de entrada un ...
  #1 (permalink)  
Antiguo 20/03/2013, 08:49
Avatar de cajojeca  
Fecha de Ingreso: junio-2008
Mensajes: 77
Antigüedad: 15 años, 9 meses
Puntos: 0
crear mi propias funciones....c++

Hola señores (as) del foro, necesito saber como crear una función que me retorne un vector char y que tenga como parámetro de entrada un string

// para declarar esta variable de entrada se debe declarar con std::string??? y en la declaración de la función también, es decir, char funcion_x(std::string)???

char funcion_X (string cadena){

// cambia de string a char con c_str().

return *c;
}

ademas de esta duda tengo varias funciones dentro de un funciones.cpp, pero quiero anexarlo a otro archivo main.cpp, esto como se realiza??, a través de un .h?? otro .cpp?? o un .hpp?? si es así como relaciono las funciones de mi archivo main.cpp (es donde quiero mandar a llamar a los metodos o funciones desde funciones.cpp), pero desconosco como se realiza dicho enlace, de ya muchas gracias....
  #2 (permalink)  
Antiguo 20/03/2013, 13:02
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: crear mi propias funciones....c++

Un ejemplo:

Código:
#include <string>

using namespace std;

const char *string2char(string str) {
	return str.c_str();
}
Esta funcion retorna un puntero a una lista de chars. De todas formas no veo la necesidad de llamar a dos funciones para hacer algo que con una ya solucionas.

Si quieres ponerla a parte puedes crear una cabecera *.h para esta funcion (y para otras que uses) y siempre usarla junto con el archivo de codigo *.cpp: desde tu proyecto añades ambos archivos (deberas compilarlos junto con tu proyecto), y en la cabecera pricnipal de tu aplicacion incluyes la cabecera de estas funciones (para que tengas el prototipo de la funcion disponible).

La otra forma es crear una libreria estatica, de forma que luego tendras que usar la cebecera de la libreria y el archivo libreria en tu proyecto (incluyes la cabecera y linkas la libreria).



"...tengo varias funciones dentro de un funciones.cpp, pero quiero anexarlo a otro archivo main.cpp..."

De la forma que quieras de las dos que te he comentado; de las dos formas tendras que crear una cabecera *.h con los prototipos de todas las funciones que tengas en tu cpp. Si quieres hacerlo de forma directa compilas ambos cpp juntos en el mismo proyecto (pero al cpp de la aplicacion principal incluyes la cebecera con los prototipos); si quieres la libreria creas la misma cabecera con los prototipos y creas la libreria (en un proyecto independiente, solo tendras que hacerlo una vez).

Saludos
vosk
  #3 (permalink)  
Antiguo 20/03/2013, 13:07
Avatar de cajojeca  
Fecha de Ingreso: junio-2008
Mensajes: 77
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: crear mi propias funciones....c++

muchas gracias.... por tu respuesta.... trabajare en ello, sobre llamar a una funcion dentro de otra, es que falta codigo por que algo mas se hace con ese char*, pero entendi a la perfeccion..... probare eso del .h y te cuento como em fue gracias...
  #4 (permalink)  
Antiguo 20/03/2013, 13:34
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: crear mi propias funciones....c++

Ok, pense que querias reinventar la rueda al hacer una funcion que ejecuta otra ya inventada :)

Lo de los h, supongamos que tienes una funcion que tienes previsto usar en mas de un proyecto, por lo que quieres sacarla fuera de tu proyecto actual para no tener que recopiarla para cada nuevo proyecto ok? Primero haces la cabecera con el prototipo (de esta funcion y de todas las que quieras), se llamara stringaux.h

Código:
//stringaux.h
#ifndef STRINGAUX
#define STRINGAUX

/**
Esta es mi libreria de funciones StringAuxiliar
*/


#include <string>
using namespace std;

char *straux_string2char(string );

#endif
Ahora creas el archivo de codigo para la funcion, que llamaremos por ejemplo stringaux.cpp (puedes llamarlo como quieras pero si lo llamas como la cabecera ya tienes una referencia):

Código:
#include "stringaux.h"

const char *straux_string2char(string str) {
	return str.c_str();
}
Si esto lo compilas por si solo obtendras un error al no haber indicado funcion de entrada. Si quieres usarlo sin libreria tendras que añadir ambos archivos a la compilacion de tus proyectos donde quieras usar la funcion y incluir la cabecera para el prototipo. Si quieres crear una libreria estatica obtendras un archivo libreria, y para usarlo en ptros proyectos tendras que usar la cabecera y el archivo libreria.

Supongamos que quieres hacer una aplicacion que usa esa funcion y no has creado la libreria estatica. Creas los archivos de la aplicacion, en el principal incluyes la cabecera 'stringaux.h' y añades 'stringaux.cpp' a la compilacion del proyecto. Si no incluyes la cabecera obtendras un error de funcion no definida, y si incluyes la cabecera pero no añades el cpp a la compilacion obtendras un error de funcion no disponible.

Supongamos ahora que has creado la libreria estatica con tu funcion, en el proyecto de la libreria tienes stringaux.h, stringaux.cpp y stringaux.lib o stringaux.a (es el archivo libreria); para distribuir tu libreria solo tienes que usar el *.h y el *.lib (o *.a), de forma que en el otro proyecto incluiras la cabecera y linkaras la compilacion con el archivo libreria.

Saludos
vosk
  #5 (permalink)  
Antiguo 20/03/2013, 13:50
Avatar de cajojeca  
Fecha de Ingreso: junio-2008
Mensajes: 77
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: crear mi propias funciones....c++

muchas gracias me quedo muy claro todo.... justo la respuesta que necesitaba leer.... muchas gracias...... en Internet no explican tan bien estos términos que cuando uno esta partiendo en esto de c++ tiende a confundir un poco, y ademas el visual studio 2008 es muy engorroso al momento de crear un nuevo proyecto.... por dar un ejemplo para hacer una conexión a una BD tengo que crear un proyecto CLR o no me funciona la conexión, entonces ese archivo .h lo quiero ocupar para una conexión y así llamar solo a la función conectar..... ya que si agrego otras funciones dentro de ese mismo archivo de conexión CLR las funciones me dan demasiados errores y problemas de librerias......

Etiquetas: funcion, string, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:46.