std :: set代表插入。

时间:2012-05-17 20:02:03

标签: c++ set

这可能很简单。我在某个类的头文件中添加了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>。我做错了什么?我没有在代码中的任何其他位置调用该集。

1 个答案:

答案 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。这似乎是合乎逻辑的事情,因为你正在修改成员。