나는 다음과 같은 비교 함수 템플릿을 구현하기 위해 노력하고있어 :기능 템플릿 및 민간 복사 생성자
template<typename T>
int compare(T x, T y)
{
if (x > y)
return 1;
else if (x < y)
return -1;
else
return 0;
}
그것은 모든 고전적인 유형의 작동하지만 다음의 클래스가 작동하지 않습니다
class c
{
private:
c &operator=(const c&) {return *this;}
c(const c &){}
public:
bool operator==(const c&) const {return true;}
bool operator>(const c&) const {return false;}
bool operator<(const c&) const {return false;}
c(){}
};
내 클래스의 두 인스턴스를 비교하려고 할 때 컴파일러는 복사기가 비공개이므로 대신 함수 템플릿에 대한 참조를 전달하려고했으나 작동하지 않습니다. 어떤 아이디어?
패스 CONST 참조. –
참조에 대해 정확히 무엇을 시도했으며 어떻게 작동하지 않았습니까? – delnan
복사 할 수없는 개체를 복사합니다. 컴파일러가 복사 생성자에 대해 "고함을 지르는 이유"를 묻습니다. –