所以我想知道,给定简单的类:
//Foo.h
class Foo {
private:
static constexpr int bar = 0;
public:
int do_something();
};
//Foo.cpp
int Foo::do_something() {
return 5 + bar;
}
从头文件中完全删除bar
是合理的,因为它是私有静态constexpr值,而该值在头文件中从未使用过?
如果只是将其浮动在cpp文件的顶部,它将有效地提供相同的功能,另外还有一点点清除头文件的好处。
有什么理由不这样做吗?
编辑:为清楚起见,这些变量可以在一个或多个函数中使用一次或多次,并且永远不要在头文件中使用。
在我的用例中,这些变量是恒定限制/ vecs,例如:
static constexpr float rotLimitVertical = to_rad(90.0f);
static constexpr float rotLimitHorizontal = to_rad(360.0f);
static const glm::vec3 right = {1, 0, 0};
static const glm::vec3 up = {0, 1, 0};
static const glm::vec3 forward = {0, 0, 1};
我想保留在文件的顶部,以便在需要时易于调整(特别是在变量仅用于一个函数的情况下,请确保将其更改为局部变量可能有意义) ,但这使查找调整变得更加烦人。
答案 0 :(得分:2)
有什么理由不这样做吗?
我认为最好将其移至.cpp文件。您可以做到:
static
的变量,或static constexpr int bar = 0;
namespace
{
constexpr int bar = 0;
}
namespace MyFile_Namespace
{
constexpr int bar = 0;
}