Ben*_*son 11 c++ templates inner-classes
我正在使用内部实用程序类创建一个模板类.模板的所有特化都需要相同的内部类:
template<...> class Outer {
class Inner { };
};
Run Code Online (Sandbox Code Playgroud)
这给了我Outer<...>::Inner但我希望所有人都是Inner同一类型,就像我刚写的那样:
class Inner { };
template <...> class Outer { };
Run Code Online (Sandbox Code Playgroud)
或者如果Outer不是模板类:
class Outer {
class Inner { };
};
Run Code Online (Sandbox Code Playgroud)
给我Outer::Inner.如果可能的话,我想Outer::Inner为所有人工作Outer<>(仅仅是出于命名空间/清晰度原因).当然,我可以搬出Inner去.
Luc*_*ton 15
嵌套类可以是非模板,但模板的每个实例都有自己的嵌套类,因为它们是(否则)不相关的类型.你可以做
namespace detail {
class Inner {};
} // detail
template<...>
class Outer {
typedef detail::Inner Inner;
};
Run Code Online (Sandbox Code Playgroud)
Nat*_*ate 13
我过去这样做的方式是使用继承:
class DummyBase{
protected:
class Inner{
//etc...
};
};
template<...> class Outer : public DummyBase{
//etc...
};
Run Code Online (Sandbox Code Playgroud)