vector.push_back()intellisense错误

时间:2013-10-15 23:48:20

标签: c++ visual-studio-2012 vector

我有以下结构

struct foo{
    vector<foo*> cntns;
};

以及以下功能

void createLink(foo *i1, foo *i2){
    i1->cntns.push_back(i2);
    i2->cntns.push_back(i1);
}

但我收到了错误

2   IntelliSense: no instance of overloaded function "std::vector<_Ty, _Alloc>::push_back [with _Ty=foo*, _Alloc=std::allocator<foo*>]" matches the argument list
        argument types are: (foo*)
        object type is: std::vector<foo*, std::allocator<foo*>>

代码似乎编译得很好,任何人都知道为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

不确定为什么这是一个Intellisense错误,因为代码将编译并正常工作。

但是,如果你真的想摆脱智能感知错误,我发现让它成为一个成员函数摆脱了抱怨:

struct foo
{
    vector<foo *> cntns;

    void createLink(foo * i2)
    {
        this->cntns.push_back(i2);
        i2->cntns.push_back(this);
    }
};