【发布时间】:2011-04-12 15:35:46
【问题描述】:
我正在尝试重载 < 运算符,但遇到了问题。
这是我的实现:
int Vector3D::operator < (const Vector3D &vector)
{
if(x<vector.x)
return 1;
else
return 0;
}
我用这个代码调用它:
std::map<Vector3D, std::vector<const NeighborTuple *> > position;
std::set<Vector3D> pos;
for (NeighborSet::iterator it = N.begin(); it != N.end(); it++)
{
NeighborTuple const &nb_tuple = *it;
Vector exposition;
pos.insert (exposition);
position[exposition].push_back (&nb_tuple);
}
但我收到此错误:
/usr/include/c++/4.1.2/bits/stl_function.h: 在成员函数'bool std::less<_tp>::operator()(const _Tp&, const _Tp&) const [with _Tp = ns3 ::Vector3D]':
/usr/include/c++/4.1.2/bits/stl_map.h:347: 实例化自 '_Tp& std::map<_key _tp _compare _alloc>::operator[](const _Key&) [with _Key = ns3 ::Vector3D, _Tp = std::vector>, _Compare = std::less<:vector3d> , _Alloc = std::allocator<:pair ns3::vector3d std::vector ns3::olsr::neighbortuple std::allocator> > >]'
../src/routing/olsr/olsr-routing-protocol.cc:853:从这里实例化
/usr/include/c++/4.1.2/bits/stl_function.h:227:错误:将“const ns3::Vector3D”作为“int ns3::Vector3D::operator
【问题讨论】:
-
能否请您以更连贯的方式重新发布您的代码:) 现在几乎不可能辨别出不同的消息和代码位。
-
我已代表 OP 对其进行了编辑以提高可读性。
-
原来有几个人同时编辑了这个。我只修改了语法,没有修改代码。我真的无法决定应该保留哪些更改,因此之前编辑过它的任何人都可以随意回滚 =)
标签: c++