混乱しているタイトルは申し訳ありません。私は自分の問題をより良く表現する方法がわからない。テンプレートパラメータが導出されるが、キャストが動作していないのはなぜC++のテンプレートと基底クラスとサブクラスをテンプレートパラメータとして使用してキャスト
template<class T>
class TmpClass
{};
class Base
{};
class Child : public Base
{};
int main()
{
typedef TmpClass<Base*> A;
typedef TmpClass<Child*> B;
A a;
B b;
A* ap = &b; //this does not work
}
:
次のコードを見てください?
に分類されます。一方、 'Child'は' Base'から派生するかもしれません。 'TmpClass'は 'TmpClass ' –
Hayt
でもOKですがTmpClassはTmpClassには完全に適合していません ? –
Naibaf
はい、テンプレートは2つの異なるクラスを生成します。そして、あなたがTをどのように使っているかによって、暗黙的に変換可能な場合には、多くのことが起こり、未定義の動作が多く発生します。 – Hayt