1#include <stdio.h>
2
3namespace Foo
4{
5  namespace Bar
6  {
7    class Baz
8    {
9    public:
10      Baz (int value):m_value(value) {}
11      int Function ()
12      {
13        printf ("%s returning: %d.\n", __FUNCTION__, m_value);
14        return m_value;
15      }
16    private:
17      int m_value;
18    };
19
20    class Baz2
21    {
22    public:
23      Baz2 (int value):m_value(value) {}
24      int Function ()
25      {
26        printf ("%s returning: %d.\n", __FUNCTION__, m_value);
27        return m_value;
28      }
29    private:
30      int m_value;
31    };
32
33    static int bar_value = 20;
34    int Function ()
35    {
36      printf ("%s returning: %d.\n", __FUNCTION__, bar_value);
37      return bar_value;
38    }
39  }
40}
41
42class Baz
43{
44public:
45    Baz (int value):m_value(value) {}
46    int Function ()
47    {
48        printf ("%s returning: %d.\n", __FUNCTION__, m_value);
49        return m_value;
50    }
51private:
52    int m_value;
53};
54
55int
56Function ()
57{
58    printf ("I am a global function, I return 333.\n");
59    return 333;
60}
61
62int main ()
63{
64  Foo::Bar::Baz mine(200);
65  Foo::Bar::Baz2 mine2(300);
66  ::Baz bare_baz (500);
67
68  printf ("Yup, got %d from Baz.\n", mine.Function());
69  printf ("Yup, got %d from Baz.\n", mine2.Function());
70  printf ("Yup, got %d from Baz.\n", bare_baz.Function());
71  printf ("And  got %d from Bar.\n", Foo::Bar::Function());
72  printf ("And  got %d from ::.\n", ::Function());
73
74  return 0;
75
76}
77