#include <stdio.h>
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 + 1;
}
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 + 2;
}
private:
int m_value;
};
static int bar_value = 20;
int Function ()
{
printf ("%s returning: %d.\n", __FUNCTION__, bar_value);
return bar_value + 3;
}
}
}
class Baz
{
public:
Baz (int value):m_value(value) {}
int Function ()
{
printf ("%s returning: %d.\n", __FUNCTION__, m_value);
return m_value + 4;
}
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;
}