パラメータ:デフォルトの代入演算子は、
template <class T>
class Number
{
private:
T num;
public:
Number() {}
Number(T n) : num(n) {}
operator T() const { return num; }
};
int main()
{
Number<int> n=5;
Number<char> c=4;
int i;
c=int(5);
i=n;
c=n;
return 0;
}
コンパイラはc=n
でoperator=
ための一致がないと言って三割り当てで立ち往生。 n
はint
に変換されてはならず、c
に割り当てられますか?
'テンプレート化されたクラスはchar'として構築されています - 私は大きな問題があります。 _as a_ 'char'で構築されたクラス? – sehe
'n'は' int'として構築されます。これは 'int'演算子を持っています。 'c'に' int'sを代入することができます。ところで、それはもう一方の方法では動作しないので、問題は 'char'に' int'を代入しようとしていません。 – baruch
あなたは明確にしていただけますか?私は問題が何であるか理解していない。 – baruch