私はこのテンプレート機能があります。指定する型
template <class P>
double Determinant(const P & a, const P & b, const P & c) {
return (b.x-a.x)*(c.y-a.y) - (c.x-a.x)*(b.y-a.y);
}
が、私はdouble
にすべての時間を戻り値の型を強制的に避けたい - P :: xとP :: yはintでもかまいません。両方の状況でこの関数が必要です。このようなxとyのタイプを指定する方法はありますか?
//doesn't compile; can't deduce template argument for T
template <typename T, class P>
T Determinant(const P & a, const P & b, const P & c) {
return (b.x-a.x)*(c.y-a.y) - (c.x-a.x)*(b.y-a.y);
}
編集:言及するのを忘れて申し訳ありません:私のコンパイラがVC2005
EDIT2です残念ながら、私はPのための構造体の実装を変更することはできません。私が扱うポイントタイプの1つは、{ long x; long y; }
としてハードコードされているMFC/ATLのCPointです。
あなたはどのコンパイラを使用していますか? – Xeo
vc2005 - 今質問に編集されました。 –