为避免确定STL中的所有内容,您可以输入
using namespace std;
为避免确定范围,您可以输入:
using std::cout;
using std::cin;
我想写一个行为相同的库。但是,我希望能够包含特定的函数集合,而不是能够包含特定的类。
所以,例如,我编码:
它们是同一命名空间的一部分,但我可以包含我想要的块
这是sudo-ish代码,但我认为它得到了我的想法:
namespace Everything{
namespace StringFunctions{
void str1(string & str);
void str2(string & str);
void str3(string & str);
void str4(string & str);
void str5(string & str);
}
namespace MathFunctions {
void math1(int & num);
void math2(int & num);
void math3(int & num);
void math4(int & num);
void math5(int & num);
}
}
然后我希望能够做到这样的事情:
#include "Everything.h"
using Everything::Stringfunctions;
int main(){
str1("string"); //this works, I can call this!
math1(111); //compile error: I've never heard of that function!
return 0;
}
显然这不起作用,我对如何分割我的图书馆感到困惑。我不想让它们成为类,然后必须在任何地方使用“点运算符”,但我也不想包含大量的头文件。
也许我会以错误的方式解决这个问题。我希望每个人都可以帮助我采取正确的方法。
通过写作:
using namespace Everything::Stringfunctions;
事后看来,这是非常明显的。
答案 0 :(得分:3)
在您提供的示例中编写库的方式已足够。
人们可以使用指令Everything::Stringfunctions
从命名空间using namespace Everything::Stringfunctions
获取每个函数。
答案 1 :(得分:0)
你应该考虑将功能分成不同的标题,否则你最终会遇到噩梦编译时间。这就是说我认为using namespace Everything::Stringfunctions;
应该这样做(在那里有额外的namespace
。我没有尝试编译)。
答案 2 :(得分:0)
如果您使用using namespace
而不仅仅是using
,那么您想要的效果似乎有效。见here(程序编译和输出'5')。