#include <iostream>
using namespace std;
namespace characters {
char tm='a';
char tc='a';
}
using namespace characters;
class table {
public:
void printline (){
char m;
m=tm;
//m=tc;
cout<<m<<m<<m<<m<<m<<m<<m<<m<<m;
}
};
int main()
{
table myTable;
myTable.printline();
return 0;
}
but when you comment out the m=tm; line and reinstate the line m=tc the code works fine.
what is so special about the identifier tm?
using namespace characters;
is the issue, that brings characters::tm
to the global namespace and makes the ambiguity with the global struct tm
. The solution:
// using namespace characters;
using characters::tm;
That directs the compiler, if you meet tm
, use here tm
from the namespace characters
.