Рассмотрим:
//В Vector2.h
class Vector2
{
public:
// returns the degrees in radians
static double calcDir(double x, double y);
}
//В Vector2.cpp
double Vector2::calcDir(double x, double y)
{
double rad = ...;
return rad;
}
Почему в сигнатуре в Vector2.cpp не требуется ключевое слово static? Когда я пытаюсь это сделать, он вызывает ошибку:
static double Vector2::calcDir(double x, double y)
Мне кажется непоследовательным. Все остальные части сигнатуры метода должны повторяться в файле .cpp(тип возврата, имя метода (duh), имена и типы аргументов, константа). Мне не нравится не знать с первого взгляда, является ли метод статическим или нет (при просмотре реализации).
Есть ли причина, по которой это не только не требуется, но и запрещено?