2013-07-25 2 views
2

프로젝트를 컴파일 할 때 컴파일러에서 multiple definition of operator<< 오류가 발생합니다.operator << Qt 프로젝트의 다중 정의

inline QDataStream &operator<<(QDataStream &out, ValueCountPair const &pair) 
{ 
    out << pair.value() << pair.count(); 
    return out; 
} 

나는 확인하고이 특정 연산자는 선언 및/또는 내 전체 코드베이스에 한 번 정의됩니다. 왜 내가 여러 개의 정의를 가지고 있다고 말하는가?

답변

3

이 일을보십시오 :

  • 이 빌드를 클릭하여 프로젝트를 청소 -> 클린 프로젝트 "프로젝트 _"
  • 나는이 같은 문제가 있었다

다시, 나는 moc 어떻게 든 유지한다고 가정 내 코드의 여러 복사본을 어딘가에 가져와 오류가 발생했습니다. 프로젝트를 정리하고 다시 빌드하면 qmakemoc 프로세스에 의해 생성 된 모든 메타 코드가 제거되므로 오류가 해결됩니다.

이것은 Qt 측 버그입니다.

+0

유용한 정보! 그것을 해결하기 위해 얼마나 많은 시간을 투자합니까? –

+0

너무 길지 않아 약 30 분이 소요됩니다. –

+0

Qt Creator를 사용하여 여러 번 이런 일이 발생했습니다. 대부분의 경우 헤더 변경에서 정의 된 인라인 클래스 함수가 ​​기본 방식으로 인해 발생하며이 파일에 종속 된 다른 파일은 다시 컴파일해야한다고 표시되지 않습니다. 따라서 동일한 함수에 대한 여러 정의가 프로젝트에서 끝납니다. – Phlucious

관련 문제