重载关系运算符== for class stackThat返回trueiftwo相同类型的堆栈是相同的;否则就是假的。
我的代码:
template <class Type>
const stackType<Type>& stackType<Type>::operator ==
(const stackType<Type>& otherStack)
{
if (this->stackTop != otherStack.stackTop)
return false;
for (int i = 0; i < stackTop; i++)
if (this->list[i] != otherStack.list[i])
return false;
return true;
} //end operator==
我收到了对本地临时对象警告的返回引用,据我所知,一旦函数范围结束,它就会被销毁。任何人都可以指出我正确的方向来解决这个警告吗?
答案 0 :(得分:2)
您宣布运营商返回const stackType<Type>&
,然后您返回true
或false
。编译器尝试将true
和false
转换为const stackType<Type>&
,然后将其返回。这可能不是你想要的 - 而是声明它返回bool
。
即使转换有效,引用也是一个局部变量,它给出了UB。