Я знаю, что вы обычно инициализируете статическую переменную-член из файла .cpp.Но мой вопрос: почему у вас есть до?
Вот пример: </p>
<pre><code>#include <vector>
using namespace std;
class A {
public:
static vector<int> x;
};
main() {
int sz = A::x.size();
}
Это дает ошибку компилятора: undefined reference to 'A::x'
Однако, это: </p>
<pre><code>#include <vector>
using namespace std;
class A {
public:
static vector<int> x;
};
// Initialize static member
vector<int> A::x;
main() {
int sz = A::x.size();
}
компилируется и работает нормально.
IЯ могу понять, инициализировал ли я вектор с помощью чего-то другого, кроме конструктора по умолчанию, но это не так.Я просто хочу создать вектор размером 0.Конечно, любые статические члены должны быть выделены памяти при инициализации программы, так почему же компилятор не использует конструктор по умолчанию?