>>main関数から明示的に呼び出す必要があるのでしょうか?
ない

>>クラスの実装部分に書いてなんらかの宣言をすれば自動的に
>>一度だけ実行されるようコンパイルされるような方法が欲しいのですが…

class A {
static int nData; // 宣言
}

int A::nData = 3; // 定義

クラスの静的変数は、C++がmainの実行前(というか、そのクラスが
最初にインスタンシングされる前)に初期化する規格になっている。
(グローバルの静的変数はmainの前)