私はC#プロジェクトに取り組んでおり、自分自身がC++で共通のパターンを再現しようとしていましたが、私は(C++で)やろうとしているものの例:テンプレートプログラミングでC++のtypedefs/aliasを使用することに相当します。
enum ProductItemTypes {
Product,
Family,
SubFamily,
Department
};
class ProductItem : PanelItem {
public:
using item_type_t = ProductItemTypes;
...
};
enum PaymentItemTypes {
Group,
Valued,
NotValued,
Balance
};
class PaymentItem : PanelItem {
public:
using item_type_t = PaymentItemTypes;
...
};
PanelItem
から継承しitem_subtype_t
自分のを持っている別のクラスがあります。 次に、PanelItem
を使用するクラスは、対応するアイテムタイプを知ることができ、一般的に動作します。
C#で同様の能力のいくつかの並べ替えを持つことは、私の周りには繰り返しのコードの多くを回避するのに役立つだろうが、私は(私は簡単にするために除外していることをいくつかのより多くのProductItem
、ProductItemType
、と)すべてのタイプを渡すためにwan'tはありませんすべての時間。
@Barry、私は[tag:C++]を追加しました。あなたはそのソースコードを読むことができる必要があるからです。 – Sinatr
なぜでしょうか:テンプレート クラスパネル{ 公開: .... }; Then Panel foo; 最終的には、上記のようなタイプを定義することができます。 –
nosbor
@nosbor他のPanelItemの型定義が異なるので、パネルの部分は重要ではなく、重要な部分は 'ProductItem'の' item_subtype_t'です。 –