typecast의 operator unsigned() 작동이 안 됩니다.

dltkddyd의 이미지

u16c{
public:
  unsigned c;
  //.... etc...
  operator unsigned() {
    return (unsigned)this->c;
  }
}

이와 같이 u16c를 만들고 컴파일 하면 헤아릴 수 없이 많은 에러가 뜹니다. 지금껏 만든 모든 오퍼레이터들에서 에러가 발생합니다. 그런데

operator unsigned()

함수 전체를 주석처리하면, 컴파일이 제대로 됩니다. operator unsigned() 함수로

u16ch u(5);
unsigned tm=(unsigned)u;

로 해서 타입캐스팅을 하려 하는데, 컴파일 자체가 안 됩니다. 타입캐스팅을 어떻게 해야 하나요?