gpt4 book ai didi

C++ == 运算符重载(实现)

转载 作者:太空宇宙 更新时间:2023-11-04 15:20:54 25 4
gpt4 key购买 nike

我在 ULong.h 中声明了这些原型(prototype)

  bool operator== (const ULong& ) const;
bool operator== (unsigned long long) const;
friend bool operator== (unsigned long long, const ULong&);

在 ULong.cpp 中,我正在尝试实现它们:

bool ULong::operator== (const ULong& ul) const
{
if(_num_digits != ul._num_digits)
return false;
for(unsigned i = 0;i < _num_digits; i++)
{
if(_number[i] != ul._number[i])
return false;
}
return true;
}

bool ULong::operator== (unsigned long long l) const
{
return *this == ULong(l);
}

ULong operator== (unsigned long long l, const ULong& ul)
{
return ULong(l) == ul;
}

我得到编译器错误:

ULong.cpp:358:56: error: new declaration ‘ULong operator==(long longunsigned int, const ULong&)’In file included from ULong.cpp:10:0:

ULong.h:76:15: error: ambiguates old declaration ‘bool operator==(long long unsigned int, const ULong&)’

我无法理解如何正确实现此方法。

最佳答案

声明说它返回一个bool。定义说它出于某种原因返回一个 ULong。那是你的错误,正如编译器已经告诉你的那样。为什么要在定义中切换返回类型?

关于C++ == 运算符重载(实现),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19397345/

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