C++ 获取模板实例化的类型?

C++ 获取模板实例化的类型?,c++,templates,C++,Templates,我有以下情况: 我有一个类型为MyClass的对象,它有一个将自身强制转换为基类的方法。该类包括一个用于基类的typedef和一个执行向上转换的方法 template <class T, class B> class BaseClass; template <class T> class NoAccess; template <class T> class MyClass : public BaseClass<T, NoAccess<T>

我有以下情况:

我有一个类型为
MyClass
的对象,它有一个将自身强制转换为基类的方法。该类包括一个用于基类的typedef和一个执行向上转换的方法

template <class T, class B>
class BaseClass;

template <class T>
class NoAccess;

template <class T>
class MyClass : public BaseClass<T, NoAccess<T> >
{
  private:
    typedef BaseClass<T, NoAccess<T> > base;

  public:
    base &to_base();
};

如果我不想使用NoAccess,是否有一种简单的方法来填写

您可以将typedef公开:

Operator<MyClass<type>::base> op(myobject.to_base());
操作符op(myobject.to_base());

您可以将typedef公开:

Operator<MyClass<type>::base> op(myobject.to_base());
操作符op(myobject.to_base());

您可以定义工厂函数以使用类型推断:

template< class Y >
Operator<Y> create_operator( Y &y ) {
    return Operator<Y>( y );
}
模板
运算符创建\运算符(Y和Y){
返回运算符(y);
}

您可以定义工厂函数以使用类型推断:

template< class Y >
Operator<Y> create_operator( Y &y ) {
    return Operator<Y>( y );
}
模板
运算符创建\运算符(Y和Y){
返回运算符(y);
}

我认为有三种可能性:

  • 使
    MyClass::base
    a
    public
    标识符

  • 更改运算符并使用类型擦除将构造函数设置为模板(可能很难):
    class操作符{模板操作符(Y&x);}

  • 将创建
    运算符的代码
    对象移动到其自己的函数模板中:
    模板操作符createOperator(const T&base)

    {返回运算符(基);}


  • 我认为有三种可能性:

  • 使
    MyClass::base
    a
    public
    标识符

  • 更改运算符并使用类型擦除将构造函数设置为模板(可能很难):
    class操作符{模板操作符(Y&x);}

  • 将创建
    运算符的代码
    对象移动到其自己的函数模板中:
    模板操作符createOperator(const T&base)

    {返回运算符(基);}


  • 我不认为
    myobject.base
    是有效语法。我不认为
    myobject.base
    是有效语法。