MFC CARRAYクラスは(MSDNから)2つのテンプレートパラメータがあります。MFC CArrayでは、異なるデフォルトテンプレートタイプを使用する理由は何ですか?
template < class TYPE, class ARG_TYPE = const TYPE& >
class CArray
...
ARG_TYPE
のデフォルトパラメータがconst TYPE&
で、SOデフォルト(例えばShould the ARG_TYPE for a CArray be const & or not異なるタイプを使用する際に尋ねる、または上のいくつかの質問What's the difference between CArray and CArray ?)。
私の質問は今です:ARG_TYPEがTYPE
またはconst TYPE&
ではない、ARR_TYPEが妥当な使用例がありますか?別のクラス?これらの用途の理由は何ですか?
あなたの質問には答えられませんが、** CArrayは使用しないでください。それはコピー構築の代わりに 'memcpy'を使って要素をコピーする恐ろしいクラスです。したがって、ポインタを含むオブジェクトの配列を保持するために使用すると、アプリケーションがクラッシュします。代わりに 'std :: vector'を使用してください。 – Praetorian
私はCArrayを使用しないように議論し、同僚にstd :: vectorを使用させるよう説得しています。私はこの奇妙なことについて疑問を抱いていました。 CMapは、4つのテンプレートパラメータと地図のソート順を決定する複雑な方法でさらに恐ろしいです... – vividos