定数フィールド (コンパイル後に変更できないクラスに関連付けられた一意の ID など) を持つ基本クラスが必要です。これまでのところ、static const
宣言は問題ありません。ここで、この基本クラスを継承し、このクラスの子が同じフィールドを持ち、独自の値を持つことを確認したいと思います。これどうやってするの?
たとえば、0 の値を保持Base
するID
フィールドで呼び出される基本クラスが必要だとします。次に、クラス、およびをすべてパブリックの子として作成したいと考えています。これらの子にも、それぞれの値が 1、2、3 のフィールドがあることを確認します (「確認する」とは、ID が明示的に宣言されていない場合にコンパイラ エラーが発生するようなものです)。int
A
B
C
Base
ID
このシナリオをなんとか構築できた場合ID
、ポインターのフィールドを要求するBase*
と、ポインターが として作成されたかnew A()
、new B()
またはとして作成されたかに応じて、異なる値が得られるはずnew C()
です。
ID
私の推測では、 asを宣言することになりますがvirtual static const
、これはもちろん意味がなく、コンパイラ エラーが発生します。
しかし、説明した結果を達成するにはどうすればよいでしょうか? (私が想像できる唯一のことはID
、整数を返す仮想関数として宣言し、その値を関数本体にハードコーディングすることですが、もっとエレガントなものを探しています。)
前もって感謝します!