我想要一个具有常量字段的基类(比如与编译时间后无法修改的类关联的唯一ID).到目前为止static const声明会很好.现在,我想继承这个基类,并确保这个类的子类具有相同的字段,但具有自己的值.我怎样才能做到这一点?
让我们说,我希望有一个基类,调用Base一个值为0 的ID字段int.然后,我想要这些类A,B并且C,所有这些都是公共的孩子,Base我想做确保这些孩子也会有ID相应值为1,2和3 的字段(通过'确定',我的意思是如果他们没有明确声明ID,就会遇到编译器错误).
如果我可以设法构建这个场景,我的期望是要求指针的ID字段Base*,我应该得到不同的值,这取决于指针是否被创建为new A(),new B()或new C().
我的猜测是声明ID为virtual static const,这当然没有意义并且给出了编译器错误.
但是,我该怎样做才能达到上述结果呢?(我唯一可以想象的是声明ID为返回整数的虚函数,然后将值硬编码到函数体中,但我正在寻找更优雅的东西.)
先感谢您!
我正在尝试创建一个模板类,其中一个人可以将类使用的(STL)容器定义为模板参数.所以我做了以下事情:
template <typename T = float,
template < class, class > class Container = std::vector,
class Alloc = typename std::vector < Spectrum < T > >::allocator_type>
class Spectrogram;
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我为流操作符定义我的重载时
// Definition inside the 'public' part of the 'Spectrogram' class
template <typename Type,
template < class, class > class C,
class A>
friend std::ostream & operator << ( std::ostream &, const Spectrogram < Type, C, A > & );
// Implementation
template <typename Type,
template < class, class > class C, …Run Code Online (Sandbox Code Playgroud)