// before main begins enum SetLattice { SETLATTICE_RANDOM, SETLATTICE_DENSITY, SETLATTICE_FILE }; typedef struct CmdLineArgs { int lattice_m; int lattice_n; int vacs; float density; char *vac_filename; SetLattice setup; } cmdline_args; // then, in main... CmdLineArgs cmd; // initialized to some values switch(cmd.setup) { case SETLATTICE_DENSITY: // randomly according to density dvac.addDensityVacs(cmd.density); break; case SETLATTICE_FILE: // place vacancies as dictated in file ifstream config_in; // <-- This is line 70! getDimerLocations(config_in, cmd.vac_filename); dvac.addFileVacs(config_in); config_in.close(); break; default: // add cmd.vacs vacancies at random <-- This is line 75! addRandomVacs(cmd.vacs); } // below are compile time errors: divac.cpp: In function `int main(int, char**)': divac.cpp:75: error: jump to case label divac.cpp:70: error: crosses initialization of 'std::ifstream config_in'