template <typename Foo>
class A{
};
class B : A<B::Bar>{
struct Bar{
};
};
我想知道我怎么能做这样的事情,或者这是将structBar移到类B之外的唯一方法。
你根本做不到!
不能使用未知类型作为模板参数,也不能转发嵌套类类型。两者加在一起就不可能做你喜欢做的事。
关于转发嵌套类声明请参阅此处:嵌套类的转发声明
已经有人提议在C++中添加这样的东西,但我认为它不是标准的一部分,甚至在C++20中也不存在。嵌套类的前向声明