簡體   English   中英

專門化一個模板類?

[英]Specialize a template class?

我試圖編寫一個程序,輸出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?

專門化類模板本身:

template <int N>
class NumberGenerator : public NumberGenerator<N-1>{
    public:
    NumberGenerator();
};

template <>
class NumberGenerator<1> {
    public:
    NumberGenerator();
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM