Ver Mensaje Individual
  #6 (permalink)  
Antiguo 26/10/2015, 02:50
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Capturar un valor de una funcion

Buenas.

Quizás la solución más flexible de todas sea la propueta por jc_moj.

Lo ideal es evitar el uso de variables globales en la medida de lo posible.

Si por cuestiones de legibilidad es necesario usar variables globales dentro de C++ y tienes la suerte de que todas las funciones que hacen uso de dicha variable se encuentran implementadas dentro del mismo CPP puedes usar un pequeño truco para evitar colisiones fuera del cpp:

test.h
Código C++:
Ver original
  1. #pragma once
  2.  
  3. int RecuperarValor();
  4.  
  5. void EstablecerValor(int valor);

test.cpp
Código C++:
Ver original
  1. namespace
  2. {
  3.   int _valor = 0;
  4. }
  5.  
  6. int RecuperarValor()
  7. { return _valor; }
  8.  
  9. void EstablecerValor(int valor)
  10. { _valor = valor; }

main.cpp
Código C++:
Ver original
  1. #include "test.h"
  2.  
  3. int main()
  4. {
  5.   EstablecerValor(123);
  6.  
  7.   int _valor = 444;
  8.  
  9.   std::cout << RecuperarValor(); // Escribe 123
  10.   std::cout << _valor << std::endl; // Escribe 444
  11. }

Como veis, el namespace no tiene un nombre asociado, es lo que se conoce como namespace anónimo. Sus características son las siguientes:
  • Como no tiene nombre no puede ser referenciado fuera del archivo que lo usa, por lo que las variables globales declaradas dentro de dicho namespace no serán accesibles fuera del fichero donde se encuentran.
  • Al no tener nombre no es necesario añadir ningún prefijo para usar lo que se encuentre almacenado dentro de dicho namespace.

PD.: Si os molan estos trucos avisadme y os digo donde podéis hacer donaciones voluntarias jejejejeje

Un saludo