如何限制"using namespace ..."的范围? C++
How to limit the scope of a "using namespace ..."? c++
我有包含“我的命名空间”的 (myns::) 方法实现的文件,在函数之前有很多“myns::”。我想写使用命名空间,但它会在其他文件中可见。我不能在“using namespace mysp;”之前写“static”。
my_namespace_file.h:
namespace myns {
void F1();
void F2();
}
my_imp_file.h:
#include "my_namespace_file.h"
// problem is here
using namespace myns;
void F1() {}
void F2() {}
如果我在这里使用“using namespace myns;”并在其他文件中包含 my_imp_file.h 我不会在此文件中使用“myns::”
niceheadername.h:
namespace myns{
extern void coolFunctionName(); // I exist!
}
nicecppfilename.cpp:
#include "niceheadername.h" // I exist in "niceheadername.h"
void myns::coolFunctionName(){ // this is what I contain!
//put content here
}
然后,在您编写的所有其他文件中 #include "niceheadername.h"
告诉编译器在哪里可以找到这些函数。
就这么简单:
#include "my_namespace_file.h"
namespace myns {
void A::F1() {} // class name must be repeated, because you cannot open namespace of the class
void A::F2() {}
}
因为你不应该 #include
带有实现的文件,你也可以使用 using namespace myns;
,但是如果你要创建另一个 class A
不同的命名空间。最好只正确使用命名空间。
我有包含“我的命名空间”的 (myns::) 方法实现的文件,在函数之前有很多“myns::”。我想写使用命名空间,但它会在其他文件中可见。我不能在“using namespace mysp;”之前写“static”。
my_namespace_file.h:
namespace myns {
void F1();
void F2();
}
my_imp_file.h:
#include "my_namespace_file.h"
// problem is here
using namespace myns;
void F1() {}
void F2() {}
如果我在这里使用“using namespace myns;”并在其他文件中包含 my_imp_file.h 我不会在此文件中使用“myns::”
niceheadername.h:
namespace myns{
extern void coolFunctionName(); // I exist!
}
nicecppfilename.cpp:
#include "niceheadername.h" // I exist in "niceheadername.h"
void myns::coolFunctionName(){ // this is what I contain!
//put content here
}
然后,在您编写的所有其他文件中 #include "niceheadername.h"
告诉编译器在哪里可以找到这些函数。
就这么简单:
#include "my_namespace_file.h"
namespace myns {
void A::F1() {} // class name must be repeated, because you cannot open namespace of the class
void A::F2() {}
}
因为你不应该 #include
带有实现的文件,你也可以使用 using namespace myns;
,但是如果你要创建另一个 class A
不同的命名空间。最好只正确使用命名空间。