#include // local classes can be defined inside function definitions, see standard [9.8] enum direction { North, South }; void foo() { static int counter = 33; typedef direction bar; class quickie { private: // local class can access typedefs bar state; public: quickie() { // local class can access static variables std::cout << "quick hello world counter = " << ++counter << std::endl; // local classes can access enums state = South; // local classes can also access extern variables and functions // local classes can NOT access automatic variables from outside the class // local classes can NOT have static data members } ~quickie() { std::cout << "sorry got to go now, state is " << state << std::endl; } }; quickie q; std::cout << "\tyou can define a class locally inside a function in C++" << std::endl; } int main(int argc, char** argv) { foo(); return 0; }