Path: utzoo!attcan!utgpu!watmath!att!tut.cis.ohio-state.edu!pacific.mps.ohio-state.edu!gem.mps.ohio-state.edu!apple!sun-barr!cs.utexas.edu!uunet!ncrlnk!ncr-sd!hp-sdd!hplabs!hpfcso!hpfclp!jenings From: jenings@hpfclp.SDE.HP.COM (Byron T. Jenings Jr.) Newsgroups: comp.lang.c++ Subject: Re: static member initialization (lippman's book) Message-ID: <7180008@hpfclp.SDE.HP.COM> Date: 20 Sep 89 22:30:26 GMT References: <292@mez.e-technik.uni-bochum.de> Organization: HP SESD, Fort Collins, CO Lines: 16 That isn't an assignment, it's a definition. You can only have one definition like that in the entire program, just like any other variable definition. Assignments to the members will still generate "private member" errors, as you'd expect. It is similar in concept to declaring a member function, and then specifying the definition of the function body elsewhere. The C translation of your example should clarify: struct Y { int deleted__1Y; }; extern int val__1Y; // The static member isn't defined yet, // just declared. int val__1Y = 1; // Here's the definition