模板类的内部类可以是非模板类吗?
Can an inner class of a template class be a non-template class?
我正在制作一个内部实用程序类的模板类。模板的所有特化都需要相同的内部类:
template<...> class Outer {
class Inner { };
};
得到Outer<...>::Inner
,但我希望所有Inner
都是相同的类型,就像我刚刚写的那样:
class Inner { };
template <...> class Outer { };
或者如果Outer
不是模板类:
class Outer {
class Inner { };
};
给我Outer::Inner
。如果可能的话,我想让Outer::Inner
为所有Outer<>
工作(只是出于名称空间/清晰度的原因)。否则我可以把Inner
移出
嵌套类可以是非模板,但模板的每个实例化都有自己的嵌套类,因为它们(否则)是不相关的类型。你可以做
namespace detail {
class Inner {};
} // detail
template<...>
class Outer {
typedef detail::Inner Inner;
};
我过去使用的方法是使用继承:
class DummyBase{
protected:
class Inner{
//etc...
};
};
template<...> class Outer : public DummyBase{
//etc...
};
对于Outer的每个实例化都是唯一的。例如,
Outer<int>::Inner will be a different type from Outer<double>::Inner
相关文章:
- 在设计 SDK 时,我是否应该在 C++ 头文件中完全隐藏内部类?
- 如何声明由多个线程调用的 C++ DLL 的内部类,而无需导出类
- 从内部类继承
- 如何将枚举类转发声明为模板化类的内部类?
- 从内部类中的方法从包含类调用方法
- 从模板化父类中的派生内部类访问受保护的成员变量
- C++模板类的内部类访问
- 使用类模板的内部类模板专用化模板
- 如何使用包含内部类的类实例有效地从内部类访问成员?
- C++ 如何在外部类中声明的内部类中使用变量
- 在C++中将内部类实现为具有名称空间的独立类有什么好处
- 参数化类的别名(或类型定义)内部类
- 从内部类的析构函数调用虚拟函数
- 如何在没有setter的情况下设置类内部类的成员变量?
- 具有相同名称的方法和内部类(错误:.. 与前面的声明冲突)
- 内部类私有成员访问和封闭的友好性
- 在C++中从内部类对象获取外部类对象
- 在它所属的模板类中使用内部类
- C++命名空间、内部类和运算符解析
- 模板类的内部类可以是非模板类吗?