c++ - 将临时对象传递给函数

标签 c++ object parameter-passing

我认为这称为临时对象。这是我的场景:

我有一些功能:

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++。

非常感谢任何有关如何修复我的实现的建议或对此行为的解释!

最佳答案

mylist.Begin() 的结果是临时的(除非 mylist.Begin() 返回一个引用)。你不能使用 临时初始化非常量引用。要么分配 将结果传递给一个变量,并将其传递给 Remove,使 引用 const,或使用按值传递。

至于为什么VS2012编译它:VS2012不符合。

关于c++ - 将临时对象传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17598449/

相关文章:

javascript - Json 格式的对象到带有新键的简单数组

c++ - 线程 sleep 超时后不继续执行

c++ - 为什么类型转换在这里不起作用?

c++ - 使用 boost/format 的安全隐患是什么?

javascript - 开发一个 super 简单的js框架作为对象练习的问题

java - 如何将对象从一台计算机发送到另一台计算机?

c++ - 从单独的文件夹在 SUSE 上运行 GCC

Prolog:传递隐式参数/谓词评估

parameter-passing - 带有 json 对象参数的 javascript 函数

c - 为什么我在将参数传递给不应接受任何传入参数的函数时没有收到警告?