Ver Mensaje Individual
  #5 (permalink)  
Antiguo 22/03/2013, 02:52
Fw190
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 5 meses
Puntos: 73
Respuesta: Acceder a variable extern desde otro archivo

Debe ser:

Código C:
Ver original
  1. extern <tipo> global_id;

donde <tipo> debe coincidir con el tipo con el que se haya declarado global_id (en este caso, por ejemplo, unsigned int).

Y, en efecto, extern static no tiene sentido. Además, una variable que vaya a verse como extern desde otros módulos de programa no puede haber sido declarada con el atributo static en el módulo que sea su "propietario".

Si lo que quieres es, simplemente, saber el número de objetos creados, en lugar de ir guardando este dato en una variable global para todos los módulos de tu programa (variable que puede modificarse desde cualquier módulo), será más seguro crearla como static en el módulo en el que tienes el constructor, añade también una función que te devuelva el valor de esa variable (que incrementarás/decrementarás cada vez que generes/destruyas un nuevo objeto). Sería una sencilla modificación sobre lo que ya tienes en item.cpp:

Código C:
Ver original
  1. #include "item.h"
  2. #include "utility.h"
  3.  
  4. static unsigned int globai_id = 0;
  5.  
  6. id_t getUniversalId()
  7. {
  8.     return global_id;
  9. }
  10.  
  11. Item::Item()
  12. {
  13.     // Incremento el contador de objetos generados
  14.     global_id++;
  15.  
  16.     // Necesita nombrarse el item
  17.     name = "UNDEFINED NAME";
  18.  
  19.     // Establece el precio del producto en 0.00
  20.     price = 0;
  21. }
  22.  
  23. // Y, logicamente, hacer el correspondiente decremento en el destructor