这可能很简单。我在某个类的头文件中添加了std::set<int> my_set;
。然后,在那个类实现中,我尝试插入到这个集合中。举个例子,只是做my_set.insert(1);
这不是编译,这是非常奇怪的行为。这是我的编译器错误:
error C2663: 'std::_Tree<_Traits>::insert' : 4 overloads have no legal conversion for 'this' pointer
我使用set包含的文件是#include <set>
。我做错了什么?我没有在代码中的任何其他位置调用该集。
答案 0 :(得分:3)
由于您收到关于this
的错误,但是您正在尝试插入int
,我会在这里试探并猜测您正在尝试这样做在const
方法中。
class A
{
std::set<int> my_set;
void foo()
{
my_set.insert(1); //OK
}
void foo() const
{
my_set.insert(1); //not OK, you're trying to modify a member
//std::set::insert is not const, so you can't call it
}
};
删除const
。这似乎是合乎逻辑的事情,因为你正在修改成员。