class A { static int foo () {} // ok static int x; // <--- needed to be defined separately in .cpp file }; Não vejo a necessidade de ter A::xdefinido separadamente em um arquivo .cpp (ou o mesmo arquivo para modelos). Por que não pode ser A::xdeclarado e definido ao mesmo tempo? Foi proibido...