(c++) 你能从外部源嵌套命名空间吗
(c++)can u nest namespaces from extern sources
我有几个 header 的命名空间都遵循特定的命名模式
现在他们的真实姓名前面都有一个前缀,例如
namespace Xname{//inside name.h
//stuff here
};
namespace Xsomething{//inside something.h
//stuff here
};
现在这对我的 atm 使用非常有用,但我的想法是再创建一个 header 包含一个命名空间,该命名空间将收集所有其他命名空间,以便我可以像这样访问它们:
#include "mainheader.h"
X::name::stuff
X::something::stuff
这样我以后就可以像这样
更改新header的命名空间名称
X::name::stuff
hello::name::stuff
我不能像这样嵌套它们:
namespace x{
namespace something{
//stuff
}
}
您可以在彼此内部定义新的命名空间like so
#include <iostream>
namespace Xname{//inside name.h
const int x = 0;
};
namespace Xsomething{//inside something.h
const int y = 1;
};
// Your other header
namespace X {
namespace name = Xname;
namespace something = Xsomething;
}
int main() {
std::cout << X::name::x << "\n";
std::cout << X::something::y << "\n";
}
如果我没理解错的话,你可以使用 using namespace
指令。这是一个例子:
namespace Xname {
struct foo {};
}
namespace X {
namespace name {
using namespace Xname;
}
}
int main()
{
Xname::foo f1; // original
X::name::foo f2; // alternative
}
我有几个 header 的命名空间都遵循特定的命名模式
现在他们的真实姓名前面都有一个前缀,例如
namespace Xname{//inside name.h
//stuff here
};
namespace Xsomething{//inside something.h
//stuff here
};
现在这对我的 atm 使用非常有用,但我的想法是再创建一个 header 包含一个命名空间,该命名空间将收集所有其他命名空间,以便我可以像这样访问它们:
#include "mainheader.h"
X::name::stuff
X::something::stuff
这样我以后就可以像这样
更改新header的命名空间名称X::name::stuff
hello::name::stuff
我不能像这样嵌套它们:
namespace x{
namespace something{
//stuff
}
}
您可以在彼此内部定义新的命名空间like so
#include <iostream>
namespace Xname{//inside name.h
const int x = 0;
};
namespace Xsomething{//inside something.h
const int y = 1;
};
// Your other header
namespace X {
namespace name = Xname;
namespace something = Xsomething;
}
int main() {
std::cout << X::name::x << "\n";
std::cout << X::something::y << "\n";
}
如果我没理解错的话,你可以使用 using namespace
指令。这是一个例子:
namespace Xname {
struct foo {};
}
namespace X {
namespace name {
using namespace Xname;
}
}
int main()
{
Xname::foo f1; // original
X::name::foo f2; // alternative
}