2013-09-23 56 views
0

Этот C++ код вызывает ошибки компоновщика во время компиляции:C++ частные статические переменные-члены

// 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(); 
} 

Перемещение вектора декларации в СРР файлов работ. Однако я хочу понять ошибку компоновщика "Undefined symbols" в приведенном выше коде. Что вызывает ошибку компоновщика в приведенном выше коде?

+1

Вы упускаете определение для '' V' в A.cpp'. –

ответ

2

Статические члены должны быть определены в модуле компиляции:

// A.cpp 

vector<int> A::v; 
3
// A.h 
class A { 
    public: 
     static void f(); 
    private: 
     static std::vector<int> v; 
}; 

// A.cpp 
//modify add this line 
static std::vector<int> A::v; 
void A::f() { 
    // this line is causing trouble 
    int i = v.size(); 
} 
Смежные вопросы