【发布时间】:2013-07-10 00:34:58
【问题描述】:
我认为这被称为临时对象。这是我的场景:
我有一些功能:
void List<T>::Remove(ListIterator &)
ListIterator List<T>::Begin() //returns an iterator pointing to the first node in the list.
当我尝试做这样的事情时,在 G++ 中:
mylist.Remove(mylist.Begin())
我收到以下错误:
没有匹配的函数调用 Remove(ListIterator)。
我没有按值获取 ListIterator 的函数,我也不想要一个。但是,我不确定我正在尝试做的事情是否有意义。该代码适用于 Windows VS2012,但不适用于 g++。
非常感谢任何有关如何修复我的实现或解释此行为的建议!
【问题讨论】:
-
你能用 const & 代替吗?
-
@doctorlove 甚至传值。迭代器(至少符合 STL 的迭代器)通常应该设计成副本非常便宜。
-
确实,我只是想知道它说 List
而不是 list 所以想知道是否发生了“不符合 STL”的事情 -
它们都不符合 stl,它本质上只是一个练习,这些都是自制的类。 ListIterator 是 List 的朋友,因此 List 可以修改 ListIterator。我希望能够修改列表,然后能够继续使用迭代器,这就是为什么我想通过引用传递它
标签: c++ object parameter-passing