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