在我的FTemplate.h中,
#ifndef FTemplate_h
#define FTemplate_h_h
template<typename T>
T& minus(const T& type1, const T& type2)
{
return type1 - type2; // error here
}
#endif
在我的主要cpp
中#include <FTemplate.h>
#include <Calculate.h>
int main()
{
Calculate cal;
Calculate cal1(42, 22);
Calculate cal2(95, 48);
cal difference = minus(cal1,cal2);
}
我正在尝试使用函数模板进行简单的计算,但我遇到了这个错误:invalid initialization of non-const reference of type ‘Calculate &’ from an rvalue of type ‘Calculate ’
我在这里做错了什么?
答案 0 :(得分:1)
您将返回对{/ 1}}在
中创建的临时对象的引用div
仅按return type1 - type2 ;
按值返回。
T& minus(const T& type1, const T& type2)
~~~
导致rvalue无法绑定到非const lvalue引用。
答案 1 :(得分:0)
您将通过引用返回结果type1-type2
。这意味着您将引用超出范围的临时对象(技术上为Calculate&&
)。请尝试按值返回,即T&
至T
。