0

これらのプロトタイプを ULong.h で宣言しています

  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: エラー: 新しい宣言 'ULong operator==(long long unsigned int, const ULong&)' ULong.cpp:10:0 からインクルードされたファイル:

ULong.h:76:15: エラー: 古い宣言を曖昧にしています 'bool operator==(long long unsigned int, const ULong&)'</p>

このメソッドを適切に実装する方法がわかりません。

4

3 に答える 3

2

戻り値の型が問題です。定義では、その ULong であり、bool である必要があります。;)

于 2013-10-16T07:26:01.817 に答える