#include namespace Foo { namespace Bar { class Baz { public: Baz (int value):m_value(value) {} int Function () { printf ("%s returning: %d.\n", __FUNCTION__, m_value); return m_value; } private: int m_value; }; class Baz2 { public: Baz2 (int value):m_value(value) {} int Function () { printf ("%s returning: %d.\n", __FUNCTION__, m_value); return m_value; } private: int m_value; }; static int bar_value = 20; int Function () { printf ("%s returning: %d.\n", __FUNCTION__, bar_value); return bar_value; } } } class Baz { public: Baz (int value):m_value(value) {} int Function () { printf ("%s returning: %d.\n", __FUNCTION__, m_value); return m_value; } private: int m_value; }; int Function () { printf ("I am a global function, I return 333.\n"); return 333; } int main () { Foo::Bar::Baz mine(200); Foo::Bar::Baz2 mine2(300); ::Baz bare_baz (500); printf ("Yup, got %d from Baz.\n", mine.Function()); printf ("Yup, got %d from Baz.\n", mine2.Function()); printf ("Yup, got %d from Baz.\n", bare_baz.Function()); printf ("And got %d from Bar.\n", Foo::Bar::Function()); printf ("And got %d from ::.\n", ::Function()); return 0; }