から2つの同じ型名私はC++にかなり新しいだと私はこのような何かを構築するために全力をしようとしていると海峡構築:C++:テンプレート
enum class Unit { km, m, cm };
template<int v, Unit u>
struct Measure {
static const int value = v;
static const Unit unit = u;
};
template<typename Measure, typename Measure>
struct Measures_same {
static const bool value(const Measure m1, const Measure m2) {
return m1.unit == m2.unit;
}
};
ここでの私の目標は、私は私の形質を呼び出すことができるということです次のようになります。
Measures_same<Measure<1, Unit::km>,Measure<1, Unit::cm>>::value
falseを返します。 明らかに、私はテンプレートで同じtypenameを2回(テンプレート)定義することは許されていませんが、他にどのようにすればいいのかは分かりません。私がそれらの1つを削除すると、引数の量はそれ以上一致しません。
どうすればよいですか?
ありがとうございます!
:
はそうのようにそれを使用しますM2? 'constexpr'を使って静的関数を使わなくてもこれを行うことができます。さらに、 'const bool'を返すのは意味をなさないので、' bool'を返すこともできます。 – cdhowie
どのように私の愚かな、多くのありがとう! – user1390504
オブジェクト指向プログラミングとテンプレートメタプログラミングを混在させているようです。おそらく実行時に値を変更したいと思うので、おそらく 'Measure'はテンプレートではありません。おそらく、それはユニットの次元(長さ、質量、電荷など)に基づくテンプレートである可能性があります。 'Measures_same'オブジェクトの使い方を知るために質問を編集して完全なプログラム([mcve])を作成すると、ニーズに合わせて何を変更する必要があるかが明確になります。 –