私はstd::pair
が2つの異なる/同じ日付の種類を結合することを理解します。下の図のように使用すると、それは何を言いますか?この場合、何が役に立ちますか?このコード行は何を推測しますか?
class A : public B<std::pair<long double, long double>>
ありがとうございます。
私はstd::pair
が2つの異なる/同じ日付の種類を結合することを理解します。下の図のように使用すると、それは何を言いますか?この場合、何が役に立ちますか?このコード行は何を推測しますか?
class A : public B<std::pair<long double, long double>>
ありがとうございます。
それはB
がtemplate classで、long doubles
のpairsと連携B
の専門A
derives fromということを推測します。
このパターンの1つの使用方法は、一般的なcomplex numberの実装です。そのシナリオでは、long double
(時にはそれ以上float
またはプレーンdouble
より正確な、しかし大きな)に基づいて、一般的なcomplex
タイプからクラスを派生することになります。コンテナに特化
class PreciseComplex
: public GenericComplex<std::pair<long double, long double> >
{
};
は、独自の実装を提供することができます
class FastComplex
: public GenericComplex<YourFasterPair<float, float> >
{
};
'>'文字の間のスペースに注意してください。これは、 '>> '演算子と区別するために必要です。 –
はAとB
例の背後にある意味を知らず、何も特定の言うことはできません:あなたはdouble
値のペアのベクトルをしたい考えてみましょう。あなたはそれのための構造を作ることができます(もしペアがあなたのコードに意味的な意味を持っていれば)、あるいは単にstd::vector<std::pair<long double, long double> >
と定義してください。 (非一般的な方法で
template<class T>
class MyVector : public std::vector<T> {
// ...
};
typedef MyVector<std::pair<long double, long double> > MyVectorOfPairsOfDoubles;
または多分:1は(私はそれをお勧めしていないことを...何らかの理由で)このstd::vector
クラスを拡張したい場合は今
、一つはとしてそれを定義します私はより悪いと感じる):
class MyVectorOfPairsOfDoubles : public std::vector<std::pair<long double, long double> >
{
// ...
};
これはあなたが提供する例のようです。
しかし、これは単なる例です...あなたがそれを詳しく説明するまでは、あなたが言及している特定のデザインに何が良いのか、何が間違っているのかを伝えることはできません(たとえばAとBは何ですか?
あなたがC++ 0xのを使用している場合を除き、 '>>が'貪欲ビットを意味するために解析されているので、コンパイルされないこと: 'でインスタンス化されたいくつかのテンプレート' B'を公に拡張していることを意味します。 –
pair
と使用、たとえば、float
代わりのlong double
、同じクラス内のすべての右にシフト。また、あなたが何を求めているのか分かりません。これは、 'A'がパラメータとして' std :: pairトラヴィスが言ったこと。 "そして、この場合は何が役に立ちますか?" - >他の情報がないときはどうすれば答えられますか?その質問には少なくとも文脈が必要です! – rubenvb
基本的なC++テンプレートの構文を理解すると、質問は意味をなさない(Bとは何ですか?) – Suma