Hier ist ein minimales Arbeitsbeispiel:Warum ist eine statische Member-Funktion _declared_ statisch, aber _defined_ sonst in C++?
Ah:
class A{
static int a_member_function();
};
A.cpp
#include "A.h"
int A::a_member_function(){return 5;}
int main(){ return 1;}
Dieser Code kompiliert und ausgeführt, aber es scheint mir, dass:
static int A::a_member_function(){return 5;}
könnte ebenso einfach verwendet werden, um die statische Elementfunktion von c zu definieren Lass A. Tatsächlich scheint es, als könnte es tatsächlich ziemlich nützlich sein, diese Anforderung zu haben, da es den Leser an die .cpp-Datei erinnern würde, dass a_member_function statisch ist.
Doch dies funktioniert offenbar nicht:
error: cannot declare member function ‘static int A::a_member_function()’ to have static linkage [-fpermissive]
So warum funktioniert es nicht? Was ist der Grund für diese Entscheidung?
Ah. Macht irgendwie Sinn. Vielen Dank! –