c++ 重名namespace的使用
在不同的头文件中定义的了相同名字的namespace。
当你在一个cpp中引用这些头文件时,这些namespace 相当于是同一个namespace。
1.h
#ifndef _1_H
#define _1_H
#include<iostream>
using namespace std;
namespace PP{
class A
{
public:
string _name;
A(string name):_name(name){};
string getName();
};
}
#endif /*_1_H*/
1.cpp
#include"1.h"
using namespace PP;
using namespace std;
string A::getName()
{
return _name;
}
2.h
#ifndef _2_H
#define _2_H
#include<iostream>
using namespace std;
namespace PP{
class B
{
public:
int _id;
B(int id):_id(id){};
int getId();
};
}
#endif /*_2_H*/
2.cpp
#include"2.h"
using namespace std;
using namespace PP;
int B::getId()
{
return _id;
}
main.cpp
#include<iostream>
#include"1.h"
#include"2.h"
using namespace std;
using namespace PP;
int main()
{
A a("a");
B b(1);
cout<<a.getName()<<endl;
cout<<b.getId()<<endl;
return 0;
}
Makefile
main: 1.o 2.o main.o
g++ 1.o 2.o main.o -o main
1.o: 1.h 1.cpp
g++ -c 1.cpp -o 1.o
2.o: 2.h 2.cpp
g++ -c 2.cpp -o 2.o
main.o: main.cpp
g++ -c main.cpp -o main.o