无法将 glm::mat4 元素push_back到头文件中声明的向量中

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

本文关键字:文件 向量 声明 back glm mat4 push 元素      更新时间:2023-10-16

我在头文件中有一个向量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

但我收到这些错误:

没有重载函数"std::vector<_Ty的实例, _Alloc>::p ush_back [with _Ty=glm::mat4, _Alloc=std::allocator]" 匹配参数列表和对象(对象具有阻止匹配的类型限定符)

'std::vector>::p ush_back':2 个重载 没有"this"指针的合法转换

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

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

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

对象具有阻止匹配的类型限定符

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

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