C++相談室 part39
■ このスレッドは過去ログ倉庫に格納されています
0214デフォルトの名無しさん
05/03/14 11:32:19class complex {
T re, im;
public:
complex& operator+=(complex a) {
re += a.re;
im += a.im;
return *this;
};
// ...
};
この定義で、complex a, b; a += b;といったコードが書けるようになります。
このクラスに、例えばdouble型の値を加算する、double d; a += d;を実現するには
complex& operator+=(double a) { re += a; return *this; };
をメンバに追加します。
ここで、double型に限らず、T型とのoperator+=が定義されている任意の型との加算を
実現するには、
template<class T> complex& operator+=(T a) { re += a; return *this; };
と書きたくなります。ところが、これではテンプレートのTがcomplexを含んでしまうため、
template<> complex& operator+=<complex>(complex a);
と特殊化を定義します。が、これはコンパイルが通りません、、
このように、「complex型(自分自身)」の場合と、それ以外の型の場合とで処理を分けるには
どう書けば良いのでしょうか。
■ このスレッドは過去ログ倉庫に格納されています