不能将 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 您正在使用的确切代码。
我在头文件中声明了一个向量 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 您正在使用的确切代码。