내 프로그램에서 클래스를 테스트하기 위해 CPPUnit을 사용하고 있습니다. 이 클래스 (SCriterionVal
)는 많은 유형의 변환 연산자를 가지고 있기 때문에 다소 고유합니다 (본질적으로 동적 유형 값 클래스). CPPUNIT_ASSERT_EQUAL()
을 사용하여 테스트하는 테스트 사례를 컴파일 할 때 CPPUnit 헤더 파일 중 하나에서 "operator<<
이 모호합니다"라는 컴파일 오류가 발생합니다. 내 형식이 assertion_traits
구조체를 인스턴스화하는 것으로 나타나며 구조체에 OStringStream
에 operator<<
을 사용하여 작동하는 toString()
메서드가 있습니다.오버로드 연산자 << ostream과 함께 사용하기
다양한 변환이 SCriterionVal
에서 사용 가능하며 그 중 일부는 operator<<
(예 : 내장 유형)으로 정의되어 있기 때문에 오류 대신 모호한 것으로 가정합니다. 이 문제를 해결하기 위해, 나는이 서명 SCriterionVal
의 헤더에 비 멤버 함수를 만든 : 나는 서명이 정확히 일치해야하기 때문에, 그것은 모호성을 해결할 생각
ostream &operator<<(ostream &stream, SCriterionVal val);
. 그런 행운은 없습니다. 여기서 내가 뭘 잘못하고 있니? 내 유형에 assertion_traits
템플릿을 전문화 할 수 있다고 가정하지만, 테스트 프레임 워크를 수용하는 대신 클래스를 스트림에 배치하는보다 일반적인 문제를 해결할 수 있기를 희망했습니다.
sooo를 코드보다 훨씬 더되는 영어 설명의 또 다른 케이스. –
다른 태그 EBTC (Engish는 Better Then Code)를 작성해야한다고 생각합니다. –
Martin, 귀하의 의견은 냉소적이라고 생각합니다. 내 회사 정책에 위배되므로 코드를 게시 할 수 없습니다. 또한 매우 큰 클래스이며 수십 개의 사용자 정의 유형을 사용하므로 어쨌든 컴파일 할 수 없습니다. – rmeador