2012-07-26 4 views
0

나는 질문이 있습니다 (그리고 내 나쁜 영어 죄송합니다.)에 그것은 코드 블록에. 마이그레이션은 성공적 이었지만, 기본 GNU 컴파일러는 컴파일 과정에서 실수를합니다.VS CBlocks, 표준 : : 정렬 나는 ++ VS 2008 Express를 C에서 C++ 프로그램을 개발, 그리고 마이그레이션 할</p> <p>운영자 <컴파일러 오류

그러나 VS가 아무 것도 발견하지 못했습니다. std::vectorstd::sort 알고리즘을 사용하고 클래스 인스턴스를 포함합니다. 그리고 나는 그것에 bool operator<()const을 만든다.

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 ===| 

누구 내가 그것을 해결할 수있는 방법을 생각을 가지고

class Item{ 
     //... 
     double size; 

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

지금 컴파일러는 내게 말?

답장을 보내 주셔서 감사합니다.

bool operator<(const Item& theOther)const 

+0

'std :: sort()'라고하는 줄을 보여주십시오. – timrau

+0

'크기

+0

나는'operator <'const, 즉'operator <(const Item & theOther)'에 인자를 주려고합니다. '정렬 '이라고 그렇게 부르시겠습니까? 'std :: sort (vec.begin(), vec.end());' –

답변

0

변경

bool operator<(Item& theOther)const 

작동합니다.

+0

감사합니다. 그것은 잘 작동합니다. 하지만 VS가 const없이 그것을 어떻게 사용할 수 있습니까? – deeagle