4
我试图写一个程序,输出1〜1000无循环或递归函数调用,我想出这个专门设计一个模板类?
#include <iostream>
template <int N>
class NumberGenerator : public NumberGenerator<N-1>{
public:
NumberGenerator();
};
template <int N>
NumberGenerator<N>::NumberGenerator(){
// Let it implicitly call NumberGenerator<N-1>::NumberGenerator()
std::cout << N << std::endl;
}
template <>
NumberGenerator<1>::NumberGenerator(){
// How do I stop the implicit call?
std::cout << 1 << std::endl;
}
int main(){
NumberGenerator<1000> a; // Automatically calls the constructor
return 0;
}
的问题是,我不能停止的链条调用(NumberGenerator<1>
仍尝试拨打NumberGenerator<0>
并无限下溢)。我怎样才能让链子停在1?
我是否可以使用其他功能在'NG <1>'的非专门类?即是否无效NG :: foo()'cover' NG <1>'? –
iBug
呃。希望这可以帮助? http://coliru.stacked-crooked.com/a/dabc1b56b56e3848 – sehe
不,您将无法使用其他功能。要停止链,你必须删除基类。除了1.模板元编程(祝你好运)之外没有办法2.专门化类模板 – sehe