Rogue Wave バナー
前へマニュアルの先頭へ目次索引次へ

17.2 traits 手法の使用方法

traits パラメータをクラスに実装するには、これを特殊テンプレートパラメータとしてクラスに追加します。 次に、特定のすべての演算をカプセル化するパラメータのクラスを指定します。 通常、このクラスはそれ自体がテンプレートです。

17.1 節で説明したマトリックスの問題を例に挙げます。マトリックスに新しい型を追加する場合、traits 手法を使用して、マトリックス全体ではなく traits クラスだけを特殊化します。必要な操作はこれだけなので、マトリックスを妥当な数値に使用する能力は保持されます。

以下の例で、longint について、マトリックス traits テンプレートと特殊化がどのように記述されるかを示します。この例には、traits テンプレートを使用するマトリックスクラスのスケルトンも含まれます。

matrix_traits を特殊化する必要はありません。ユーザーに要求されるのは、matrix がその traits テンプレートパラメタから期待するインタフェースを確実に提供することだけです。

ほとんどの場合、traits クラスに含まれる演算は静的関数なので、実際には traits オブジェクトをインスタンス化する必要はありません。

標準ライブラリは、この手法を使用して string クラスに広範な型に及ぶ最大の柔軟性と効率を与えます。char_traits traits クラスは、文字列での基本演算を提供します。最も単純な例を挙げると、文字列 wstring に、たとえば Strcpywcstrcpyなどの 1 バイト文字およびワイド文字の `C' ライブラリ関数へのアクセスを提供します。

traits クラスの詳細については、『標準 C++ クラスライブラリ・リファレンス』の char_traits の項を参照してください。



前へマニュアルの先頭へ目次索引次へ
Copyright (c) 1998, Rogue Wave Software, Inc.
このマニュアルに関する誤りのご指摘やご質問は、電子メールにてお送りください。
OEM リリース, 1998 年 6 月