Warum kann eine statische member-Funktion nur als static deklariert, die innerhalb der Klassendefinition und nicht auch in der eigenen definition?

Während der Implementierung einer Klasse für die Erstellung/Aktualisierung von Feldern auf dem Bildschirm, ich wollte noch hinzufügen einer statischen member-Funktion stellt sicher, dass keine aktuell sichtbaren Felder überlappen (nimmt seine Informationen aus einem statischen Zeiger-array, um alle aktuell sichtbaren Felder)

Meinem ersten code hat folgende Struktur:

class Box
{
public:
    //...
    static void arrangeOverlappingBoxes();
};

static void Box::arrangeOverlappingBoxes()
{
    //...
}

War ich ziemlich überrascht, dass dies einen Fehler erzeugt C2724: 'statische' sollte nicht verwendet werden für die definierten Funktionen im Datei-Bereich.

Mit einigen trial, google und Irrtum habe ich herausgefunden, dass meine Funktion definition verlieren sollte die keyword -static, d.h. es sollte

void Box::arrangeOverlappingBoxes()
{
    //...
}

Doch ich habe keine Ahnung, was die Hintergründe sein könnten. Es scheint so zu sein asymmetrisches und verwirrend, wenn eine andere Funktion header für seine Erklärung in der definition der Klasse und Ihrer eigenen definition. Gibt es dafür irgendeinen Grund?

InformationsquelleAutor mr_T | 2014-09-22
Schreibe einen Kommentar