1: //namespace3.cpp
2: //Illustrates a not-all-in-one-place namespace and functions in namespaces.
4: #include <iostream>
5: #include <iomanip>
6: using namespace std;
8: #include "utilities.h"
9: using Scobey::Pause;
11: namespace MyStuff
12: {
13: //Here are two versions of MyStuff::DoIt.
14: //Note that in this case the the full definition of each is given.
15: void DoIt() //version 1
16: {
17: cout << "\nDoing it my way ...\n";
18: }
20: void DoIt //version 2
21: (
22: int indentLevel //in
23: )
24: {
25: cout << "\n" << setw(indentLevel) << ""
26: << "Doing it my way and indented ...\n";
27: }
28: }
30: namespace YourStuff
31: {
32: void DoIt(); //This of course is YourStuff::DoIt.
33: //This is just a prototype; the definition appears below.
34: }
36: void DoIt() //This is a global DoIt.
37: {
38: cout << "\nDoing it any ol' way ...\n";
39: }
41: int main()
42: {
43: //using namespace MyStuff; //1
44: //using namespace YourStuff; //2
45: //using MyStuff::DoIt; //3
46: //using YourStuff::DoIt; //4
48: DoIt();
49: Pause(0, "", 1);
51: MyStuff::DoIt(6);
52: Pause(0, "", 2);
53: }
55: void YourStuff::DoIt() //Definition corresponding to above prototype
56: {
57: cout << "\nDoing it your way ...\n";
58: }
60: /*
61: Questions:
62: 1. What is output if the program is run as is?
63: 2. What is output if comment //1 is activated?
64: 3. What is output if comment //2 is activated?
65: 4. What is output if comment //3 is activated?
66: 5. What is output if comment //4 is activated?
68: Answers:
69: 1. Doing it any ol' way ...
70: Doing it my way and indented ...
71: 2. namespace3.cpp(48) : error C2668: 'DoIt' : ambiguous
72: call to overloaded function
73: 3. namespace3.cpp(48) : error C2668: 'DoIt' : ambiguous
74: call to overloaded function
75: 4. Doing my way ...
76: Doing it my way and indented ...
77: 5. Doing your way ...
78: Doing it my way and indented ...
79: */