【问题标题】:C++ template return valueC++ 模板返回值
【发布时间】:2013-03-29 16:45:41
【问题描述】:

我需要使用模板实现一个为任何数据类型 T 服务的队列,我需要实现的一个函数称为 T getFirst(),它返回第一个节点的值 我原来的做法是:

T getFirst(){
    T returnValue = _first->_data;
    return returnValue;
}

如果我打电话,我发现这不起作用

Queue<int> q;
q.add(2);
cout << Q.getFirst() << endl;

输出是一些垃圾。 令人惊讶的是,如果我将代码简化为:

T getFirst(){
    return _first->_data;
}

它有效!!,为什么???有人可以解释一下。我需要第一种方法的原因是稍后我需要实现 removeFirst(),我可能需要临时保存数据。非常感谢各位!!!

【问题讨论】:

  • return getFirst;到底是怎么编译的?
  • 对不起,这是一个错字,现在已经修复了,但是为什么它不起作用!!!
  • 我们需要查看您的其余实现...它不起作用的最可能原因是_first-&gt;_data 是垃圾。

标签: c++ function templates types return


【解决方案1】:

这里有错误:

T getFirst(){
   T returnValue = _first->_data;
   return getFirst;  //^^^You return function name? 
}

应该是

T getFirst(){
   T returnValue = _first->_data;
   return returnValue ;
}  

【讨论】:

    【解决方案2】:

    看起来你真的想要:

    return returnValue;
    

    【讨论】:

    • 是的,对不起,这是一个错字,但问题仍然存在
    猜你喜欢
    • 1970-01-01
    • 2016-06-12
    • 2021-10-10
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多