개체를 double 값으로 변환하고 싶습니다. 그것은 다음과 같습니다 -> ClassA clsA(1,2,3);
C++ operator = 개체에서 double로 캐스트
double result = clsA;
내 헤더 파일에 같은 STH를 썼다 :
const double operator= (const ClassA&);
그리고 CPP 파일에 구현 :
const double ClassA::operator= (const ClassA& a) {
/* here I made some math calculation on instance 'a' and the result is double value *\
return doubleValue;
}
그러나 그것은하지 않습니다 작업, 나는 그것도 좋은 생각인지 모르겠다. 나는 operator =를 사용하여 하나의 객체를 다른 예제에 할당한다. -> objA = objB, 그래서 나는 tog를 주장 할 수 있는지 모른다. 에테르.
도움 주셔서 감사합니다. 당신이 명시 적 캐스트가 (두 배로 두 배로 실수로 암시 적 캐스트의 위험을 줄일 수 있도록 발신자를 강제하려면
// integer division/multiplication
// computes (num_*fac_)/div_
struct A
{
int num_, fac_, div_;
A (int num, int fac, int div) : num_(num), fac_(fac), div_(div) {};
// convert to double
operator double() const { return double(num_ * fac_)/double(div_); }
};
int main()
{
A a(1, 2, 3);
volatile double f = a;
return f;
}
것은 만들 : 운영자
'를 ClassA :: 연산자 = (const를 클래스를 사용 &)'는 (const-reference)'ClassA'를'ClassA'에 할당하기 위해 사용됩니다. 반환 유형은'ClassA '여야합니다. 'ClassA a, b; a = b;'. 당신이 원하는 것은 변환 연산자가 두 배가되기 때문에'ClassA '안에'operator double() const;'와 같은 것입니다. 예 : http://en.cppreference.com/w/cpp/language/cast_operator. – Holt
@Holt 의견을 작성 하시겠습니까? 어떻게 시작해야할지 모르겠다. – lory
@Holt 그리고 '='다음에 오는 객체를 취하는 것을 '알리는'방법과 double value = objA에 대입하는 값; ? – lory