У меня есть следующая структура
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*>>
Код, кажется, компилируется хорошо, кто-нибудь знает, почему это происходит?
Не уверен, почему это ошибка Intellisense, так как код будет компилироваться и работать нормально.
Однако, если вы действительно хотите избавиться от ошибок Intellisense, я обнаружил, что его функция-член избавляется от жалоб:
struct foo
{
vector<foo *> cntns;
void createLink(foo * i2)
{
this->cntns.push_back(i2);
i2->cntns.push_back(this);
}
};