如何在C++中存储和添加指向引用向量的链接?

如何在C++中存储和添加指向引用向量的链接?,c++,vector,iterator,C++,Vector,Iterator,我有一个情况,我有一个1类的对象和一个2类的向量。我的目标是让Class1的对象包含对Class2向量中某些对象的引用。类别1包含以下成员: std::vector<Class2&> links; void addLink(Class2 &obj) { links.push_back(obj) } 然后我想遍历Class2的对象,对于满足特定条件的任何对象,我想添加如下链接: for (std::vector<Class2&>::itera

我有一个情况,我有一个1类的对象和一个2类的向量。我的目标是让Class1的对象包含对Class2向量中某些对象的引用。类别1包含以下成员:

std::vector<Class2&> links;

void addLink(Class2 &obj)
{
  links.push_back(obj)
}
然后我想遍历Class2的对象,对于满足特定条件的任何对象,我想添加如下链接:

for (std::vector<Class2&>::iterator i = vector2.begin(); i != vector2.end(); ++i)
{
  if (condition_satisfied(*i))
  {
    obj1.addLink(*i)
  }
}
然而,这样做会导致C2528的编译时错误:指向引用的指针是非法的。我在这里做错了什么?

要求T在C++98中,在C++11中,但普通引用两者都不是。换句话说,引用不能存储在std::vector中

您可能喜欢使用普通指针。或者,这是一个伪装的指针

要求T在C++98和C++11中都是,但普通引用两者都不是。换句话说,引用不能存储在std::vector中


您可能喜欢使用普通指针。或者,这是一个伪装的指针

考虑一个参考向量是没有意义的。我想你想要的是一个指针向量。鉴于该向量不拥有对象,你可以尝试一个普通指针向量。请原谅我的天真,但为什么引用向量没有意义。@rowanphilip,引用不能重新分配。如果向量需要调整大小,它就有问题。考虑引用向量是没有意义的。我想你想要的是一个指针向量。鉴于该向量不拥有对象,你可以尝试一个普通指针向量。请原谅我的天真,但为什么引用向量没有意义。@rowanphilip,引用不能重新分配。如果需要调整向量的大小,则会产生问题。请注意,在C++11之前,CopyAssignable是必需的。从那时起,虽然许多成员函数有更严格的要求,但可擦除已经足够了。请注意,直到C++11,可复制可分配才是要求。从那时起,可擦除就足够了,尽管许多成员函数确实有更严格的要求。