template <class Derived>
struct Base {
typedef typename Derived::T T;
};
template <typename T_>
struct Impl : public Base<Impl<T_>> {
typedef T_ T;
};
初始化时,我收到错误
'Impl'中没有名为'T'的类型
那么,如何在派生自基类的过程中定义typename?
答案 0 :(得分:0)
找到一种方法来做到这一点,虽然它并不完美,但确实有效。
template <class T>
struct traits;
template <class Derived>
struct Base {
typedef typename traits<Derived>::T T;
};
template <typename T_>
struct Impl : public Base<Impl<T_>> {
typedef T_ T;
};
template <typename T_>
struct traits<Impl<T_>> {
typedef T_ T;
};
这不完美,因为在特质课上,我不能写
typedef typename Impl<T_>::T T;
仍未定义。