是否可以从基础 class 中获取子 class 类型?

Is possible to get type a child class type from base class?

我需要这样的东西:

template <typename T>
class A
{
public:
    T commonData;
    TYPEOF_CHILD_CLASS *test(T data)
    {
        return new CHILD_CLASS(data);
    }
};

template <typename T>
class B : public A<T>
{
public:
    T bdata;
    B(T data)
    {
        bdata = data;
    }
};

template <typename T>
class C : public A<T>
{
public:
    T cdata;
    C(T data)
    {
        cdata = data;
    }
};

int main(int argc, char const *argv[])
{
    auto a = C<int>(1).test(2);
    return 0;
}

可以用c++定义TYPEOF_CHILD_CLASS吗?在我使用 D 之前。在 D 中它适用于:

R (this R) test(T data)
{
   return new R(data);
}
...

void main()
{
    auto a = new C!A(1).test(2);
}

这是一个模板。 c++有类似的方法吗?也许我也可以通过模板设置类型?或者我可以通过 typeid?

确定类型名称

感谢@Some 程序员兄弟@463035818_is_not_a_number。根据 this link 它有效。

template <class T, typename TT>
class A
{
public:
    TT commonData;
    T *test(TT data)
    {
        return new T(data);
    }
};

template <typename T>
class B : public A<B<T>, T>
{
public:
    T bdata;
    B(T data)
    {
        bdata = data;
    }
};

template <typename T>
class C : public A<C<T>, T>
{
public:
    T cdata;
    C(T data)
    {
        cdata = data;
    }
};

int main(int argc, char const *argv[])
{
    auto a = C<int>(1).test(2);
    return 0;
}