不能将 push_back glm::mat4 元素放入头文件中声明的向量中

Can't push_back a glm::mat4 element into a vector declared in a header file

我在头文件中声明了一个向量 a.h:

// in a.h
class A {
public:
    ...
    std::vector<glm::mat4> transforms;
}

我试图在我的 a.cpp 文件中 push_back() 一个对象:

// in a.cpp
glm::mat4 transform;
transforms.push_back(transform);  // errors here

但我遇到了这些错误:

no instance of overloaded function "std::vector<_Ty, _Alloc>::push_back [with _Ty=glm::mat4, _Alloc=std::allocator]" matches the argument list and object (the object has type qualifiers that prevent a match)

'std::vector>::push_back': 2 overloads have no legal conversion for 'this' pointer

如果我尝试直接在 a.cpp 文件中声明向量,那么它会起作用:

// in a.cpp
std::vector<glm::mat4> foo;
foo.push_back(transform);   // this works

这是怎么回事?我在头文件中声明向量时做错了什么?

the object has type qualifiers that prevent a match

关注这个,因为这似乎是问题所在。这意味着您可能已经在 A class 中对正在或已将其应用为常量类型限定符的向量做了一些事情。在没有更多信息的情况下,这是我能说的最好的,因为很明显问题不是向量本身。

为了获得更清晰明确的答案,您可能需要 post 您正在使用的确切代码。