で私はこのようなクラスを書いている:過負荷演算子は= Cで2つの引数++
class Digit
{
private :
int *ref;
public :
Digit (int a) : ref(&a) {}
int get_val()
{
return (*ref);
}
Digit operator= (int &a)
{
if (a < 0 || a > 9)
throw "invalid digit assignment.";
(*ref) = a;
return (*this);
}
};
誰かが数字を定義した場合ので、彼はそれに値を超え9未満0を割り当てることはできません。 問題は、別の=演算子を定義して、ある値にDigitを割り当てることもできるということです。 私はこのような何か試してみました:
int operator= (int &a, Digit &d)
{
a = d.get_value();
return a;
}
をしかし、私はいくつかのエラーを取得:'int operator=(int&, Digit&)' must be a nonstatic member function
は、私はこれをどのように修正することができますか?どのように私は演算子= 2引数でオーバーロードできますか?
なぜ 'ref'は*ポインタ*ですか? – molbdnilo
「代入演算子をどのようにオーバーロードできますか」と考えるのではなく、「暗黙的に 'Digit'を' int'に変換する方法を考えてください。 – molbdnilo
@molbdnilo私は次のように数字を返す[]演算子を持つクラスを書く必要がありました。a [10] = 5; (そして一部のメンバーが5.に変更されました) – iambb5445