是否可以使typedef仅对子类可见?

Ben*_*son 2 c++ templates

鉴于:

template <...>
class InheritedByManyClasses
{
public:
    typedef InheritedByManyClasses<...> ParentClass;
};
Run Code Online (Sandbox Code Playgroud)

如果我生一个也是更多课程的父母的孩子,有没有办法将这个想法联系在一起?

template<...>
class ChildInheritedByMany : InheritedByManyClasses<...>
{
public:
    typedef ... ParentClass;  // oops!  now this class can't benefit from parent typedef
};
Run Code Online (Sandbox Code Playgroud)

有什么方法可以让我typedef的孩子只能看到它的孩子吗?

sta*_*ust 5

using
Run Code Online (Sandbox Code Playgroud)
template<typename T>
struct A {
  protected:
    using V = std::vector<T>;   
};

template<typename T>
struct B : A<T> {
  protected:
    typename A<T>::V i;
  public:
    using A<T>::V;  // If you want to make it public now

};

int main() { 
    // A<int>::V i;  // Not visible
    B<int>::V i;  // visible
}
Run Code Online (Sandbox Code Playgroud)