【问题标题】:References and Pointers and parameter passing with const引用和指针以及使用 const 传递参数
【发布时间】: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&amp; 的错误。我试过&amp;item,铸造item,但没有一个能让编译器满意。这样做的正确方法是什么?我的queue 应该是my_class 而不是my_class*?另一种可能是我的push 参数类型也不正确...

【问题讨论】:

  • *item 不起作用,因为模板处理后我的队列的push 期待my_class*&amp;(我没有包括consts,因为它们的排序总是让我感到困惑)。 *item 会变成my_class&amp;
  • 是的,我的错。但是不要将参数类型设为const my_class*,而是将函数本身的参数更改为my_class*

标签: c++ pointers reference constants


【解决方案1】:

我想我明白了——我的队列需要是 const my_class* 类型才能匹配我的 dispatch 参数类型。让我知道是否有更好的方法......

【讨论】:

  • 或者将答案重构为更“回答”的形式,或者使用额外的数据和想法编辑您的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-28
  • 2023-04-06
  • 2011-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-06
相关资源
最近更新 更多