プロジェクトの数学コードを書き込もうとしていますが、興味深い問題に遭遇しました。
template<class T> class Radian;
template<class T> class Degree;
template <class T>
class Radian
{
public:
T mRad;
public:
Radian(const Degree& d);
};
template <class T>
class Degree
{
public:
T mDeg;
public:
Degree(const Radian& d);
};
inline Radian::Radian ( const Degree& d )
{
}
inline Degree::Radian ( const Radian& d )
{
}
コードは大きくなりますが、理解しやすいように不要な関数を削除したことに注意してください。
テンプレートがどのように機能するかを理解しています。コンパイル時に生成されることは知っていますが、この特定の例では、使用する構文がよくわかりません。コンストラクターでDegreeにテンプレート引数が必要であるという事実を知っていますが、それをどのように書くかがわかりません。私が見たところ、別のテンプレートを使用する必要があるかもしれませんが、Degree_floatからRadian_doubleに変換しないので、両方に同じTを使用すると便利です。
誰かがこれに光を当てることができますか?
ありがとうございました。