You
declare i here:
Code:
class TH_Atender_Cliente //: public Thread
{
public:
static int i;
...
You
define i here:
Code:
int TH_Atender_Cliente::i;
Suppose you didn't create any instances of "TH_Atender_Cliente". The compiler is expecting "i" (
one "i") to be defined somewhere. Where, if you don't tell it?
Now suppose you declare a single instance of "TH_Atender_Cliente ". Or better, suppose you declare
multiple instances of "TH_Atender_Cliente". Which one defines the "one, true i"? The answer, of course, is none of them.
You always have to define a global variable some one place (and use "extern" to reference it from every other place). The situation is no different for a static class member (like "TH_Atender_Cliente::i).