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

es posible compilar clase en C++ para usarla en C

Estas en el tema de es posible compilar clase en C++ para usarla en C en el foro de C/C++ en Foros del Web. Mi duda es esa, si puedo compilar una clase con funciones y todo, es decir: la definicion de la clase (el .cpp) más el header ...
  #1 (permalink)  
Antiguo 10/06/2014, 17:13
Avatar de GumiCat  
Fecha de Ingreso: mayo-2014
Ubicación: Argentina
Mensajes: 16
Antigüedad: 10 años
Puntos: 0
es posible compilar clase en C++ para usarla en C

Mi duda es esa, si puedo compilar una clase con funciones y todo, es decir:
la definicion de la clase (el .cpp) más el header (el .h), compilarlos en una librería estática (.a) y usarla en un programa en C?
Es eso posible?

Si es así, cómo? cuál sería el procedimiento?
  #2 (permalink)  
Antiguo 11/06/2014, 00:45
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: es posible compilar clase en C++ para usarla en C

No. O al menos eso creo XD
Lo mas parecido a las clases som las estructuras c++.
En c++ una estructura es una especie de clase con los atributos públicos.
Si no fuera muy complicado esta clase de la que hablas, tal vez sea posible convertirla en una estructura y así puedes trabajar con sus miembros.
Si vas a estar teniendo esos problemas regularmente creo que te deberías plantear hacerte un upgrade y aprender c++ ya que justo esta es la diferencia. Trabajas con clases ;)
  #3 (permalink)  
Antiguo 11/06/2014, 13:52
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: es posible compilar clase en C++ para usarla en C

Tambien puedes echar un vistazo a las tablas de funciones virtuales, serian el equivalente en C de las clases de c++. Seguro que encontraras mas informacion de ezo por ahi. Lo normal es exportar librerias de C a c++ porque soporta la sintaxi; porque no lo haces todo en c++?

Saludos
vosk
  #4 (permalink)  
Antiguo 11/06/2014, 15:12
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: es posible compilar clase en C++ para usarla en C

C solo justifica para aplicaciones de altisimo rendimiento y bajo nivel ... sino C++ basta
__________________
Salu2!
  #5 (permalink)  
Antiguo 12/06/2014, 06:04
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: es posible compilar clase en C++ para usarla en C

La manera de hacerlo es:

En el archivo de cabecera, llamémoslo, por ejemplo, Mi_clase.h, pones la definición de la(s) clase(s), así como los prototipos de las funciones relacionadas con ella(s) (constructores, destructores, etc) que deban ser vistas desde el exterior, así como las macros que vayas a definir relacionadas con tu(s) clase(s). No pongas en el archivo de cabecera código ejecutable, aunque no es ilegal puede darte muchos problemas si necesitas utilizar un depurador.

En el archivo Mi_clase.cpp es donde pondrías la implementación de esas funciones cuyos prototipos has declarado en Mi_clase.h. Por supuesto, en este archivo debes #incluir Mi_clase.h.

Ahora se compilaría el archivo Mi_clase.cpp, indicando que la salida es una librería estática Mi_clase.a.

Una vez que tienes la librería estática Mi_clase.a, en el programa en el que vayas a utilizarla debes #incluir el archivo Mi_clase.h e indicar al enlazador (linker) que utilice el archivo Mi_clase.a.

Saludos,
  #6 (permalink)  
Antiguo 12/06/2014, 09:20
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: es posible compilar clase en C++ para usarla en C

Opino que no va a funcionar tan "facilmente" sin considerar el name mangling, o la maneras de evitarlo.

Si esto no fuera un problema y pudiera linkear exitosamente, ¿como va a instanciar los objetos e invocar los métodos desde el lado C? En C la sintaxis de metodos no existe.
Compilar es una cosa menor al lado de intentar instanciar objetos o en general resolver el problema de usar sintaxis y semantica C++ en C. ¿o no?
__________________
Visita mi perfil en LinkedIn

Última edición por CalgaryCorpus; 12/06/2014 a las 17:15
  #7 (permalink)  
Antiguo 13/06/2014, 06:50
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: es posible compilar clase en C++ para usarla en C

Cita:
Opino que no va a funcionar tan "facilmente" sin considerar el name mangling, o la maneras de evitarlo.
Es cierto, y es que no me acordé de la parte que pone "para usar en C" de la pregunta.

Entonces, si tienes un compilador C++, para qué complicarte la vida, hazlo todo en C++ y problema resuelto. Si tienes un compilador C y otro C++, la incompatibilidad a nivel de código objeto está prácticamente asegurada (echa un vistazo al enlace que dejó CalgaryCorpus).
  #8 (permalink)  
Antiguo 13/06/2014, 07:28
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años
Puntos: 49
Respuesta: es posible compilar clase en C++ para usarla en C

http://trucosinformaticos.wordpress....-objetos-en-c/

¡¡¡Saluditos!!!

  #9 (permalink)  
Antiguo 17/06/2014, 05:00
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: es posible compilar clase en C++ para usarla en C

Excelente referencia. +1...
  #10 (permalink)  
Antiguo 17/06/2014, 10:19
Avatar de GumiCat  
Fecha de Ingreso: mayo-2014
Ubicación: Argentina
Mensajes: 16
Antigüedad: 10 años
Puntos: 0
Respuesta: es posible compilar clase en C++ para usarla en C

Ah, ya, me queda claro
Esa era mi duda, si se podía, pero ya veo que no. Sucede que estaba haciendo una clase de cadena en C++ y pensé que me solucionaría mucho si la pudiera utilizar en C, por la sobrecarga de operadores que hacen que sea más fácil operar.
Pero bueno ya veo que no es posible voy a tener que hacer algo parecido pero con structs

Gracias por las referencias y las respuestas!

Etiquetas: clase, compilar, funcion, posible, programa, usar
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 23:27.