可能重复:
在实现中重新包含标头
我想知道的是,通常的做法是不在using namespace xxx
头文件中使用,以免污染全局命名空间。这是#includes
怎么回事?
如果我有foo.h
和foo.cpp
.:
//Foo.h
#ifndef FOO_H_
#define FOO_H_
#include <string>
class Foo
{
public:
Foo(std::string * a, std::string * b);
virtual ~Foo();
};
#endif /* FOO_H_ */
//Foo.cpp
#include <string>
#include <Foo.h>
Foo::Foo(std::string * a, std::string * b)
{
// TODO Auto-generated constructor stub
}
Foo::~Foo()
{
// TODO Auto-generated destructor stub
}
我真的需要#include <string>
在这两个文件中吗?仅将其包含在 .h 或 .cpp 中就足够了吗?(我知道两者都可以,但是什么是可取的?)
编辑,关于我的问题的更多背景信息。
如果我要在我的头文件中使用某些类(作为变量或方法参数),我会在头文件中转发声明它们,并且只在源文件中包含头文件本身。但这不适用于大多数 STL 库,因为您不能转发声明类模板?