두 개의 간단한 클래스가 있습니다. integer
과 변수가 하나만있는 int
이고 real
은 double
입니다.C++ : 양면 클래스 변환
integer a=2016; int b=a;
real a=20.16; double b=a;
이 완벽하게 작동하도록 이미 끝났어요. 지금은과 같이, 그들 사이의 변환을 할 필요가 :
integer foo; real bar; foo=bar; bar=foo;
또는 적어도 유사한 구문을. 나는 double을 int로 변환 할 때 데이터가 손실 될 것이라는 것을 안다. 나는 그것을 처리 할 것이다. 그러면 내가 어떻게 할 수 있니? 무엇을 어디에서 #include해야하고 메소드/연산자가 작성하는 데 과부하가 필요합니까? 내 프로젝트는 파일 main.cpp
, integer.h
, integer.cpp
, real.h
, real.cpp
으로 나뉩니다. 감사. 당신은 기본적으로 문제에 대한 두 가지 솔루션을
//integer.h
class integer
{
private:
int a;
public:
integer();
integer(int number);
operator int() const;
};
//integer.cpp
#include "integer.h"
integer::integer(){
a=0;
}
integer::integer(int number){
a=number;
}
integer::operator int() const{
return a;
}
//real.h
class real {
private:
double a;
public:
real();
real(double number);
operator double() const;
};
//real.cpp
#include "real.h"
real::real(){
a=0;
}
real::real(double number){
a=number;
}
real::operator double() const{
return a;
}
http://en.cppreference.com/w/cpp/language/cast_operator – Danh
좋은 답변을 얻으려면이 클래스의 최소 버전을 표시해야합니다. –
@erip이 경우 상속을받지 못합니다.이 경우 [원 - 타원 문제] (https://en.wikipedia.org/wiki/Circle-ellipse_problem)가 있습니까? –