Possible Duplicate:
undefined reference to static member variable
What is an undefined reference/unresolved external symbol error and how do I fix it?
#include<iostream>
using namespace std;
class abc {
    private:
    static int a ;
    public:
    abc(int x) {
        a = x;
    }
    void showData() {
        cout<<"A = "<<a<<endl;
    }
};
int main() {
    abc a1(4);
    abc a2(5);
    a1.showData();
    a2.showData();
    return 0;
}
When I try to compile this function on Ubuntu with GCC compiler. I get the following error.
/tmp/ccCKK2YN.o: In function `main':
static1.cpp:(.text+0xb): undefined reference to `Something::s_nValue'
static1.cpp:(.text+0x14): undefined reference to `Something::s_nValue'
collect2: ld returned 1 exit status
Compilation failed.
Where as the following code runs fine
#include<iostream>
using namespace std;
class Something
{
public:
    static int s_nValue;
};
int Something::s_nValue = 1;
int main()
{
    Something cFirst;
    cFirst.s_nValue = 2;
    Something cSecond;
    std::cout << cSecond.s_nValue;
    return 0;
}
Is this because Static member variables needs to initialized explicitly before accessing them via objects.Why so ?
 
     
     
     
    