最小限の作業例を次に示します。
あ:
class A{
static int a_member_function();
};
A.cpp
#include "A.h"
int A::a_member_function(){return 5;}
int main(){ return 1;}
このコードはコンパイルおよび実行されますが、次のように思われます。
static int A::a_member_function(){return 5;}
クラス A の静的メンバー関数を定義するためにも同じように簡単に使用できます。実際、この要件があると、.cpp ファイルの読者に a_member_function が静的であることを思い出させるので、実際にはかなり便利なようです。
ただし、これは明らかに機能しません。
error: cannot declare member function ‘static int A::a_member_function()’ to have static linkage [-fpermissive]
では、なぜうまくいかないのでしょうか。この決定の背後にある理由は何ですか?