我对头文件的用法有以下怀疑。使用C++头文件的最佳做法
1 - 包括警卫意见后,将
/* Copyright Note and licence information (multiple lines) */
#ifndef FOO_H
#define FOO_H
// Header file contents
#endif
香草萨特说,在他的“C++编码标准”预定像上面的代码是有问题的。他说“#ifndef”语句应该出现在头文件的第一行。我没有觉得这是令人信服的。这是否跟在头文件中的你们/ gals?
2 - 在头文件
#ifndef FOO_H
#define FOO_H
namespace FooNameSpace{
// Header file contents
}
#endif
使用命名空间采用了正确的做法上面的代码?我的意思是,你是否在头文件中使用名称空间?我知道为什么在头文件中导入一个名字空间是毫无意义的,但是像上面这样的声明呢?
如果上面的一个是正确的方法,你如何做一个类在另一个命名空间的“前向声明”?是像
#ifndef FOO_H
#define FOO_H
namespace AnotherNameSpace{
class AnotherFoo; // forward declaration
}
namespace FooNameSpace{
// Use AnotherFoo here
}
#endif
的“向前声明”是为了避免“循环依赖”的唯一方法,正确吗?
在源文件中,使用“使用”不根本不对,但在头文件中,这是非常错误的。 – 2009-01-04 06:21:48