variable de miembro estático cuando se declara privado

Cuando una variable miembro estática se declara privada en una clase, ¿cómo se puede definir?

Supongo que tengo la siguiente declaración de clase

class static_demo
{
   private:
      static int a;

   public:
      static int b;

      void set(int x, int y)
      {
         a = x;
         b = y;
      }

      void show()
      {
         cout << "a = " << a << "\n";
         cout << "b = " << b << "\n";
      }
};

Entonces, la siguiente declaración para definira resultará en un error de compilación.

int static_demo::a;

Entonces es posible tener un miembro de datos estáticos en la sección privada de la clase?

Agregando código completo según Greg,

#include <iostream>

using namespace std;

class static_demo
{
   private:
      static int a;

   public:
      static int b;

      void set(int x, int y)
      {
         a = x;
         b = y;
      }
};

int static_demo::a;
int static_demo::b;

int main()
{
   static_demo::b = 10;
   static_demo::a = 20;

   return 0;
}

El error de compilación es:

static_member_variable.cpp: In function `int main()':
static_member_variable.cpp:20: error: `int static_demo::a' is private
static_member_variable.cpp:26: error: within this context

Respuestas a la pregunta(3)

Su respuesta a la pregunta