Инициализация статичного вектора в потомке структуры
Есть такой код, однако он не рабочий из-за того, что возникает ошибка при попытке инициализировать статичный вектор в потомке структуры:
template<typename T>
struct Component {
uint32_t id;
static std::vector<T> components;
static T* GetComponent(uint32_t find) {
for (int i = 0; i < components.size(); ++i) {
if (components[i].id == find) {
return components[i];
}
}
return nullptr;
}
};
struct Transform : public Component<Transform> {
double x, y, rot;
};
Transform::components = 0; //Ошибка здесь
int main() {
Transform tr;
Transform::components.push_back(tr);
}
Каким образом можно реализовать хранилище всех компонентов(возможно, с помощью шаблонов) без реализации отдельного под это класс и лишнего кода?