0

基本クラスを使用すると、テンプレート化されたクラスへのポインターを効果的に作成できることがわかっています。もっと簡単な方法はありますか?

そう。これは基本クラスを使用した例です

class A {}
template <class T>
class B : public A {}

これで、 のインスタンスを作成B<T>し、基本クラスを使用してそれを指すことができますA。もっと簡単な方法はありますか?より直接的な方法は?「ダミー」基本クラスの作成を含まないもの。

4

1 に答える 1

3

テンプレートのさまざまなインスタンス (たとえば、B<int>と) は、とがB<char>別のタイプであるように、完全に別のタイプです。例のように、同じ基本クラスから両方を派生させない限り、いずれかのタイプのオブジェクトを指すことができる単一のポインターを持つことはできません。またはのいずれかを指すことができる単一のポインター変数を持つことができないのと同じように。intcharintchar

しかし、ポインターが単一の特定の型を指すようにしたい場合は、型B<int> *などのポインターを宣言するだけB<char> *です。そのための基本クラスは必要ありませんA

もちろん、その単一の特定のタイプは、他のテンプレートの引数として指定される場合があります。たとえば、C<T>type のポインターを含むテンプレート クラス を使用B<T> *できるため、 aC<int>にはB<int> *メンバーがあり、 aC<char>にはB<char> *メンバーがあります。A繰り返しますが、そのための基本クラスは必要ありません。

于 2012-07-08T22:25:37.597 に答える