0

質問があります(下手な英語でごめんなさい。)

VS 2008 Express C++ で C++ プログラムを開発しましたが、それをコード ブロックに移行したいと考えています。移行は成功しましたが、デフォルトの GNU コンパイラーがコンパイルでエラーを検出しました。

ただし、VS は何も見つかりませんでした。std::sortにアルゴリズムを使用しstd::vector、クラスのインスタンスが含まれています。そして、私はそれを作りbool operator<()constます。

    class Item{
        //...
        double size;

    public:
        bool operator<( Item& theOther)const{
            return size < theOther.size ? true : false;
        }
        //...
    }

今、コンパイラは私に次のように言います:

c:\mingw\bin\..\lib\gcc\mingw32\4.5.2\include\c++\bits\stl_algo.h||In function '_RandomAccessIterator std::__unguarded_partition(_RandomAccessIterator, _RandomAccessIterator, const _Tp&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Item*, std::vector<Item> >, _Tp = Item]':|

c:\mingw\bin\..\lib\gcc\mingw32\4.5.2\include\c++\bits\stl_algo.h:2249|70|instantiated from '_RandomAccessIterator std::__unguarded_partition_pivot(_RandomAccessIterator, _RandomAccessIterator) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Item*, std::vector<Item> >]'|

c:\mingw\bin\..\lib\gcc\mingw32\4.5.2\include\c++\bits\stl_algo.h:2280|54|instantiated from 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Item*, std::vector<Item> >, _Size = int]'|

c:\mingw\bin\..\lib\gcc\mingw32\4.5.2\include\c++\bits\stl_algo.h:5212|4|instantiated from 'void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator<Item*, std::vector<Item> >]'|

D:\the_user\packing\packing\PackingProblem.h:426|41|instantiated from here|
c:\mingw\bin\..\lib\gcc\mingw32\4.5.2\include\c++\bits\stl_algo.h|2208|error: no match for 'operator<' in '__first.__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator* [with _Iterator = Item*, _Container = std::vector<Item>, __gnu_cxx::__normal_iterator<_Iterator, _Container>::reference = Item&]() < __pivot'|

D:\the_user\packing\packing\Item.h|15|note: candidate is: bool Item::operator<(Item&) const|
||=== Build finished: 2 errors, 0 warnings ===|

誰でもどうすれば解決できますか?

すべての答えをありがとう。

4

1 に答える 1

0

変化する

bool operator<( Item& theOther)const

の中へ

bool operator<(const Item& theOther)const

動作するはずです。

于 2012-07-27T14:39:03.967 に答える