У меня есть вектор в заголовочном файле a.h
:
// in a.h
class A {
public:
...
std::vector<glm::mat4> transforms;
}
Я пытался push_back()
вставить в него объект в моем a.cpp
файле:
// in a.cpp
glm::mat4 transform;
transforms.push_back(transform); // errors here
но я получаю эти ошибки:
ни один экземпляр перегруженной функции «std :: vector‹ _Ty, _Alloc> :: push_back [with _Ty = glm :: mat4, _Alloc = std :: allocator] »не соответствует списку аргументов и объекту (объект имеет квалификаторы типа, предотвращающие совпадение)
и
'std :: vector> :: push_back': 2 перегрузки не имеют законного преобразования для указателя this
Если я попытаюсь объявить вектор непосредственно внутри файла a.cpp
, он сработает:
// in a.cpp
std::vector<glm::mat4> foo;
foo.push_back(transform); // this works
Что здесь происходит? Что я сделал не так, когда объявил вектор в заголовочном файле?