gcc.info: Static Definitions
Go forward to Temporaries
Go up to C++ Misunderstandings
Go to the top op gcc
Declare *and* Define Static Members
When a class has static data members, it is not enough to *declare*
the static member; you must also *define* it. For example:
class Foo
{
...
void method();
static int bar;
};
This declaration only establishes that the class `Foo' has an `int'
named `Foo::bar', and a member function named `Foo::method'. But you
still need to define *both* `method' and `bar' elsewhere. According to
the draft ANSI standard, you must supply an initializer in one (and
only one) source file, such as:
int Foo::bar = 0;
Other C++ compilers may not correctly implement the standard
behavior. As a result, when you switch to `g++' from one of these
compilers, you may discover that a program that appeared to work
correctly in fact does not conform to the standard: `g++' reports as
undefined symbols any static data members that lack definitions.
Created Wed Sep 1 16:42:21 2004 on bee with info_to_html version 0.9.6.