나는 이런 식으로 뭔가를 :사용
CLASS CLASS::operator|(CLASS& right) {
return binop(*((CLASS*) this), right, OP_OR);
}
클래스는 어떤 클래스입니다. 난 그냥 현재 개체를 전달하는 데 문제가 지금
someheader.h: In member function 'void CLASS::set(int64_t)':
someheader.h:469:29: error: no match for 'operator|' in '*(CLASS*)this | CLASS(bit)'
someheader.h:469:29: note: candidate is:
someheader.h:376:1: note: CLASS CLASS::operator|(CLASS&)
someheader.h:376:1: note: no known conversion for argument 1 from 'CLASS' to 'CLASS&'
: binop의 프로토 타입은
CLASS binop(CLASS& left, CLASS& right, OP op);
이 모두 잘 작동하고 비주얼 C++ 2010를 사용하여 컴파일하지만 오류로 인해 ++ g에 실패 (* this)를 일부 매개 변수로 사용하기 때문에 명시 적으로 캐스팅하여 포인터에 const
한정자를 제거하고 정상적으로 작동하고 Visual C++ 컴파일러를 속여 일반 포인터로 사용하도록 만듭니다. g ++는 이것을 좋아하지 않습니다. 캐스트를 제거하면 this
이 const 한정이므로 계속 오류가 발생합니다. 연산자의 왼쪽 및 오른쪽 크기로 수행 할 작업은 둘 다 변경할 수 있어야합니다.
내가 수집 할 수있는 것으로부터, 어떤 객체를 전달하고 함수 호출에서이를 참조로 변환하는 데 문제가있는 것처럼 보입니다 ... 어느 것이 나에게별로 의미가 없습니다. 어떤 제안?
함수가 CLASS의 멤버 인 경우 펑키'* ((CLASS *) this)가 무엇입니까? – chris
내가 말했듯이, 컴파일러는'* this'를 사용할 때 그것을 좋아하지 않았기 때문에 나는 그것을 행복하게 만들었습니다. – Pochi
오, 그럴 필요는 없습니다. 아마도'set' 함수는 오류가있는 곳에서 볼 가치가 있습니다. 사실'CLASS & right'가'const class & right'에 문제가 있습니까? – chris