我有以下结构
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*>>
代码似乎编译得很好,任何人都知道为什么会发生这种情况?
答案 0 :(得分:1)
不确定为什么这是一个Intellisense错误,因为代码将编译并正常工作。
但是,如果你真的想摆脱智能感知错误,我发现让它成为一个成员函数摆脱了抱怨:
struct foo
{
vector<foo *> cntns;
void createLink(foo * i2)
{
this->cntns.push_back(i2);
i2->cntns.push_back(this);
}
};