This C++ code is producing linker errors at compile time:
// A.h
class A {
public:
static void f();
private:
static std::vector<int> v;
};
// A.cpp
void A::f() {
// this line is causing trouble
int i = v.size();
}
Moving the vector declaration into the cpp file works. However I want to understand the linker error "Undefined symbols"
cause in the above code. What is causing the linker error in the above code?
Static members have to be defined in a compilation unit: