elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Donde incluir librerías en clases
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Donde incluir librerías en clases  (Leído 2,442 veces)
cNoob

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Donde incluir librerías en clases
« en: 15 Diciembre 2017, 16:33 pm »

Hola, he hecho un pequeño programa para acompañar mi pregunta

main.cpp
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    clase miClase(42);
  8.    miClase.mostrar();
  9.    return 0;
  10. }
  11.  

clase.h
Código
  1. #ifndef CLASE_H
  2. #define CLASE_H
  3. #include <iostream>
  4.  
  5. class clase
  6. {
  7. private:
  8.    int numero;
  9. public:
  10.    clase (int n=0);
  11.    void mostrar(void) const;
  12. };
  13.  
  14. #endif // CLASE_H

clase.cpp
Código
  1. #include "clase.h"
  2. #include <iostream>
  3.  
  4. clase::clase (int n) : numero(n){}
  5.  
  6. void clase::mostrar(void) const
  7. {
  8.    cout << numero << endl;
  9. }
  10.  

pues bien, cuando compilo este proyecto codeblocks me dice que el "cout" de la linea 8 de clase.cpp "was not declared in this scope", y lo mismo para el endl. Supongo que he incluido iostream de forma equivocada, si alguien me puede decir como incluir las librerias de forma correcta...
Gracias   :-*


En línea

Wannabe programador autodidacta de c++
"Usain Bolt comenzó gateando."
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Donde incluir librerías en clases
« Respuesta #1 en: 15 Diciembre 2017, 17:01 pm »

cout es del namespace std, tal como pones en el main: "using namespace std;".
Esa línea no la has puesto en clase.cpp (Sinó, tendrás que escribir std::cout y std::endl)


En línea

BloodSharp


Desconectado Desconectado

Mensajes: 803


El Messi-Vegeta :D


Ver Perfil
Re: Donde incluir librerías en clases
« Respuesta #2 en: 15 Diciembre 2017, 17:03 pm »

pues bien, cuando compilo este proyecto codeblocks me dice que el "cout" de la linea 8 de clase.cpp "was not declared in this scope", y lo mismo para el endl. Supongo que he incluido iostream de forma equivocada, si alguien me puede decir como incluir las librerias de forma correcta...

cout es del namespace std, tal como pones en el main: "using namespace std;".
Esa línea no la has puesto en clase.cpp (Sinó, tendrás que escribir std::cout y std::endl)

Iba a responder lo mismo que ivancea96, pero además aparte un detalle: el namespace std no es necesario en main.cpp


B#
En línea



MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Donde incluir librerías en clases
« Respuesta #3 en: 16 Diciembre 2017, 13:01 pm »

Y añado más: no incluyas librerías por incluir, es decir, si no vas a usar nada de ellas no escribas los incluyes, como en el caso del mail.cpp y clase.h.

En línea

cNoob

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Re: Donde incluir librerías en clases
« Respuesta #4 en: 17 Diciembre 2017, 09:55 am »

Pues parece bastante evidente ahora que lo decís, no se como pnsé en eso xD
Dos pequeñas dudas, si en el fichero header no uso ninguna librería, puedo añadirlas solo en el fichero .cpp donde tengo los métodos? Este programa no era el que me estaba dando el error como tal, era otro en el que también incluía la librería <fstream> y el ifstream me daba el mismo error, es por eso también entonces?
En línea

Wannabe programador autodidacta de c++
"Usain Bolt comenzó gateando."
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Donde incluir librerías en clases
« Respuesta #5 en: 17 Diciembre 2017, 13:31 pm »

Prácticamente todas las clases y funciones de la librería estandar llevan el namespace std, así que es posible.

Las liberías deberías añadirlas solo en donde las necesites. Además, ten en cuenta que si haces un include en una header y luego haces include de ese header, vas a traerte todos los includes que haya hecho ese header. (Al fin y al cabo, un include no es más que reemplazar el #include con el contenido del archivo referenciado)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema al incluir varias clases
Programación C/C++
Jbat1Jumper 2 2,339 Último mensaje 29 Marzo 2012, 13:23 pm
por Jbat1Jumper
Donde puedo encontrar la libreria y librerias necesarias para Sockets?
Programación C/C++
madrilillo 1 2,209 Último mensaje 27 Octubre 2013, 19:27 pm
por vangodp
Incluir estructuras ahorra librerías?
ASM
Vaagish 3 2,640 Último mensaje 24 Febrero 2014, 19:06 pm
por Vaagish
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines