【发布时间】:2014-05-07 06:44:01
【问题描述】:
不知何故,在我的一生中,我永远无法理解引用。我有这个queue 类的方法:
void push(const T& item);
我现在正试图将一些东西放入队列中(这是一个非常人为的例子):
class my_class { };
void dispatch(const my_class* item)
{
my_queue<my_class*> queue;
queue.push(item);
}
// ...
auto x = new my_class;
dispatch(x);
我收到关于从 const my_class* 转换为 my_class *const& 的错误。我试过&item,铸造item,但没有一个能让编译器满意。这样做的正确方法是什么?我的queue 应该是my_class 而不是my_class*?另一种可能是我的push 参数类型也不正确...
【问题讨论】:
-
*item不起作用,因为模板处理后我的队列的push期待my_class*&(我没有包括consts,因为它们的排序总是让我感到困惑)。*item会变成my_class&。 -
是的,我的错。但是不要将参数类型设为
const my_class*,而是将函数本身的参数更改为my_class*
标签: c++ pointers reference constants