[gnu.g++.bug] static variables get *defined* in class declaration

ngo%tammy@HARVARD.HARVARD.EDU (Tom Ngo) (02/24/90)

    Machine:  Convex C220
    g++:      1.36.4

    Problem:  If a variable is declared static inside a class
    declaration, it gets defined once for each .cc file in which the
    class declaration gets #include'd.  This causes the linker to
    complain about multiple definitions.

    Is this legal C++?  If so, how can the compiler work out that
    there should be only one copy of the variable in question?

    Try g++ bar.cc bar2.cc -o bar, using the files below.
===========================================================================
bar.h:
#include <stream.h>
class bar {
  protected:
    static int count = 0;
  public:
    void incr() { count++; }
    void show() { cout << count << "\n"; }
};
===========================================================================
bar.cc:
#include "bar.h"
main()
{
    bar foo,foo2;
    foo.show();
    foo2.show();
    foo.incr();
    foo.show();
    foo2.show();
}
===========================================================================
bar2.cc:
#include "bar.h"
===========================================================================