gpt4 book ai didi

c++ - 重载的 + 和 - 运算符,无法弄清楚如何检查传入的 "amount"是否为负数

转载 作者:太空宇宙 更新时间:2023-11-04 11:59:16 26 4
gpt4 key购买 nike

我已经重载了这些运算符来帮助我遍历双向链表,但是遇到了一个小错误,而且我还是 c++ 的新手,我被卡住了。我从来没有考虑过输入的“金额”是负数。所以我想我需要在每个运算符中检查一个负数,因为它会显着改变我遍历列表的方式,例如,如果我指向节点 5 并且我 +(-3) 我希望它移动向后三个节点,与 - 相同,5 - (-3) 将向前三个节点。逻辑看似简单,但语法令人困惑。以下是重载的运算符:

template <typename T>
typename doublyLinkedList<T>::iterator doublyLinkedList<T>::iterator::operator+(const int amount) const {
doublyLinkedList<T>::iterator tempClone(*this);
tempClone.pastBoundary=false;
T i;

for(i=0; i < amount; i++)
{
if(tempClone.current->forward == NULL)
{
tempClone.pastBoundary =true;
}else
{
++tempClone;
}
}

if(tempClone.pastBoundary == true)
{
return *this;
}else
{
return tempClone;
}
}
template <typename T>
typename doublyLinkedList<T>::iterator doublyLinkedList<T>::iterator::operator-(const int amount) const {
doublyLinkedList<T>::iterator tempClone(*this);
tempClone.pastBoundary=false;
T i;

for(i=0; i < amount; i++)

{
if(tempClone.current->backward == NULL)
{
tempClone.pastBoundary =true;
}else
{
--tempClone;
}
}


if(tempClone.pastBoundary == true)
{
return *this;
}else
{
return tempClone;
}
}

最佳答案

if(amount = (-amount)) - 除非 amount 为 0,否则这始终为真。

它需要在 for 循环之前。事实上,我可能会这样做:

if (amount < 0) return this->operator-(-amount); 

对于另一个运算符(operator),反之亦然。

关于c++ - 重载的 + 和 - 运算符,无法弄清楚如何检查传入的 "amount"是否为负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14817710/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com