2つの単純なクラスがあります:integer
とその中に変数int
が1つあり、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
に分かれています。ありがとう。
EDIT:あなたは基本的に自分の問題には2つのソリューションを持っている
//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)がありますか? –