鉴于:
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的孩子只能看到它的孩子吗?
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)