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