#include <stdio.h>

struct modelCatalog {
    int m_a;
    modelCatalog(): m_a(777) {}
};

class G4PhysicsModelCatalog
{
  public:
  G4PhysicsModelCatalog();
  static modelCatalog* catalog;
};

G4PhysicsModelCatalog::G4PhysicsModelCatalog()
{ if(!catalog) { 
    static modelCatalog catal;
    catalog = &catal; 
  } 
}

modelCatalog* G4PhysicsModelCatalog::catalog;
/*
G4int G4PhysicsModelCatalog::Register(const G4String& name)
{
  G4PhysicsModelCatalog();
  .... 
}
*/
int main()
{
    printf("catalog before = %p\n", G4PhysicsModelCatalog::catalog);
    G4PhysicsModelCatalog();
    printf("catalog after= %p m_a = %d\n", G4PhysicsModelCatalog::catalog,  G4PhysicsModelCatalog::catalog->m_a);
    return 0; 
}