希望在某个中心点定义常量(例如某些字符串或数字)。为了保持代码的可读性,还希望能够轻松访问这些常量。在我研究实现这一目标的良好实践期间,我现在找到了以下两种解决方案(https://stackoverflow.com/a/9649425/2776093)。
FoodConstants.h:
namespace FoodConstants {
namespace Fruits {
extern const string Apple;
...
}
...
}
FoodConstants.cpp:
namespace FoodConstants {
namespace Fruits {
const string Apple = "apple" ;
...
}
...
}
FoodConstants2.h:
class FoodConstants {
public:
class Fruits {
public:
static const string Apple;
...
}
...
}
FoodConstants2.cpp:
const string FoodConstants::Fruits::Apple = "apple"
...
对于这两种解决方案,我都可以在包含 .h 的程序中的任何位置使用 FoodConstants::Fruits::Apple 访问苹果常量。初始化在同一个编译单元中完成,避免了初始化问题。我注意到了一个区别:对于第二种解决方案,我不能,例如,使用“使用命名空间 FoodConstants”来缩写使用 Fruits::Apple 对字符串常量的访问。
还有其他区别吗?有没有像这样组织常量的首选方法?