0

这可能非常简单。我已经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>. 我做错了什么?我没有在代码的其他任何地方调用该集合。

4

1 回答 1

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

于 2012-05-17T20:06:14.060 回答