#include <unordered_map>
#include <set>
struct struct_ {};
class class_ {
public:
std::vector<struct_*>vectorStructPointers;
};
std::set<class_>setClass;
std::vector<struct_>vectorStruct;
int main() {
auto itvs = vectorStruct.begin();
auto itsc=setClass.begin();
itsc->vectorStructPointers.push_back(&*itvs);
return 0;
}
Severity Code Description Project File Line Suppression State
Error (active) E1087 no instance of overloaded function "std::vector<_Ty, _Alloc>::push_back [with _Ty=struct_ *, _Alloc=std::allocator<struct_ *>]" matches the argument list and object (the object has type qualifiers that prevent a match) P1
P1\Simplify.cpp 14
盯着这个看了几个小时。 不明白: 1)std::分配器 2)我的push_back有什么问题。
请帮忙
一个
std::set
的元素是const
并且不能被修改。
所以
itsc->vectorStructPointers
也是 const
并且 push_back
不能被调用,因为它是一个非const
成员函数。
错误消息提示:
the object has type qualifiers that prevent a match
(类型限定符是const
)
如果要修改元素,不能用
std::set
。它应该保持元素有序,因此不允许修改它们。