Невозможно использовать ключевое слово static для статического метода в файле реализации класса C ++ (.cpp)

Учитывайте:

// В 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;
}

Почему не ключевое слово static требуется в подписи в Vector2.cpp? Когда я пытаюсь это сделать, появляется ошибка:

static double Vector2::calcDir(double x, double y)

Мне это кажется несовместимым. Все остальные части сигнатуры метода необходимо повторить в файле .cpp (тип возвращаемого значения, имя метода (duh), имена и типы аргументов, константа). Мне не нравится не знать с первого взгляда, является ли метод статическим или нет (при рассмотрении реализации).

Is есть причина, по которой это не только не требуется, но и запрещено?

11
задан Lightness Races with Monica 11 January 2012 в 20:41
поделиться