プライベートな静的メンバへ静的メンバ関数でアクセス

// klass_static_private.cpp
#include <iostream>

class klass_static
{
    public:
        klass_static();
        static int get_count();

    private:
        static int count;
};

// private でも初期化は外で
int klass_static::count = 0;

klass_static::klass_static()
{
    count++;

    std::cout << count << std::endl;
}

int klass_static::get_count() {
    return count;
}

int main()
{
    klass_static *k1, *k2, *k3;

    k1 = new klass_static();
    k2 = new klass_static();
    k3 = new klass_static();

    // private で定義されてると外からは klass_static::count で参照できないから
    // 静的メンバ関数を使って値を取得する
    std::cout << klass_static::get_count() << std::endl;

    return 0;
}
1
2
3
3