Hola! el modificador extern se utiliza cuando se quiere acceder a una variable que fue creado desde otro archivo, pero no cuando se crea la variable. Por lo tanto en utility.h no debias haber usado "extern"
La combinacion "extern static" creo q no es valida(y si lo fuese no tiene mucho sentido). Si solo hubieras usado static para crear la variable
global_id, lo que harias es limitar el alcance de dicha variable, haciendola invisible a otros archivos(lo cual no es tu objetivo)...
Resumiendo:
utility.h
Código C:
Ver originalunsigned int global_id = 0; /* variable global */
item.cpp
Código C:
Ver original#include "item.h"
#include "utility.h"
extern global_id;
id_t getUniversalId()
{
return global_id++;
}
Item::Item()
{
// Genera el id Correcto
id = getUniversalId();
// Necesita nombrarse el item
name = "UNDEFINED NAME";
// Establece el precio del producto en 0.00
price = 0;
}
Saludos