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

[SOLUCIONADO] namespaces c++?

Estas en el tema de namespaces c++? en el foro de C/C++ en Foros del Web. Buenas! Recién me estoy iniciando en c++ y se me presentó un problema con los namespaces, si bien los pude implementar, quisiera saber como separar ...
  #1 (permalink)  
Antiguo 07/03/2014, 21:10
 
Fecha de Ingreso: marzo-2014
Mensajes: 5
Antigüedad: 10 años, 6 meses
Puntos: 0
namespaces c++?

Buenas!

Recién me estoy iniciando en c++ y se me presentó un problema con los namespaces, si bien los pude implementar, quisiera saber como separar las declaraciones de la implementación de funciones, es decir, que en el header
queden los namespaces con declaraciones, y en otro archivo (.cpp tengo entendido) la implementación de las funciones.

Tengo esto que es muy simple, lo hice para ver como funcionaba para ir familiarizandome con esto.

namespace sumaresta{
int sumar(int, int);
int restar(int, int);



int sumar(int a, int b) {
return a+b;
}

int restar(int a, int b) {
return a-b;
}

}

namespace muldiv{
int multiplicar(int, int);
int dividir(int, int);



int multiplicar(int a, int b) {
return a*b;
}

int dividir(int a, int b) {
return a/b;
}
}

como dije, importando este archivo .h desde el módulo principal funciona correctamente, pero se puede separar la implementacion de esas funciones en otro archivo? y cómo? con un ejemplo sencillo me basta, es solo para saber eso.

Muchas gracias desde ya!
  #2 (permalink)  
Antiguo 08/03/2014, 04:46
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 11 meses
Puntos: 38
Respuesta: namespaces c++?

Esto es ?XD
Código C++:
Ver original
  1. //namespace.h
  2. namespace sumaresta {
  3.     int sumar ( int, int );
  4.     int restar ( int, int );
  5. }
  6.  
  7. namespace muldiv {
  8.     int multiplicar ( int, int );
  9.     int dividir ( int, int );
  10. }

Código C++:
Ver original
  1. //namespace.cpp
  2. namespace sumaresta {
  3.     int sumar ( int, int );
  4.     int restar ( int, int );
  5. }
  6.  
  7. namespace muldiv {
  8.     int multiplicar ( int, int );
  9.     int dividir ( int, int );
  10. }

Código C++:
Ver original
  1. //main.cpp
  2. #include <iostream>
  3. using namespace std;
  4. #include "namespace.h"
  5.  
  6. int main()
  7. {
  8.     using namespace sumaresta;
  9.     int num1 = sumar(10 , 100);
  10.     int num2 = restar(100, 40);
  11.    
  12.     cout << num1 << endl;
  13.     cout << num2 << endl;
  14.    
  15.     using namespace muldiv;
  16.    
  17.     num1 = multiplicar(3, 10);
  18.     num2 = dividir(100, 5);
  19.  
  20.     cout << num1 << endl;
  21.     cout << num2 << endl;    
  22.    
  23.    
  24.     cout << "Hello world!" << endl;
  25.     return 0;
  26. }

Debes configurar el proyecto por ejemplo en codeblocks para que compile el otro cpp (namespace.cpp) si no usas un proyecto el compilador te va decir undefined references...blabla XDD que si, que no van encontrar las funciones.
entonces vas a tener que hacer un include con el cpp cosa que no es buena idea XDD.
Si utilizas el mismo include debes poner el guard (protección para dobles includes iguales).
Espero que estés familiarizado con los ficheros include. :D

Última edición por vangodp; 08/03/2014 a las 04:54
  #3 (permalink)  
Antiguo 08/03/2014, 07:11
 
Fecha de Ingreso: marzo-2014
Mensajes: 5
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: namespaces c++?

Exactamente, sólo que el "namespace.cpp" quedaría así:

Código:
namespace sumaresta {
          
          int sumar(int a, int b){
                     return a+b;
          }
          
          int restar(int a, int b){
              return a-b;
          }          
}

namespace muldiv {
          
          int multiplicar(int a, int b){
              return a*b;
          }
          
          int dividir(int a, int b){
              return a/b;
          }
}
Era tan simple como esoxD me estaba faltando poner los namespaces en el .cpp, ese era el problema, muchas gracias por la respuesta!
  #4 (permalink)  
Antiguo 08/03/2014, 08:26
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 11 meses
Puntos: 38
Respuesta: namespaces c++?

Si XD supongo que a la hora de pegar el código lo lie parda XDDD
antes de usar un determinado nemespace para lo que sea, tanto como leer como para cambiarle el valor, debes llamarlo antes ;)

Etiquetas: funcion, int
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 19:31.