簡體   English   中英

定義Template類的實例

[英]Define Instance of Template class

是否可以在編譯時定義模板類的實現,然后在運行時使用?

這是我的課

template <typename T>
class CDetectError
{
public:
    CDetectError();
    CDetectError(T errorStart, T notAvailableStart)
    {
       m_Error = errorStart;
       m_NotAvailable = notAvailableStart;
    }

virtual ~CDetectError();

T Error() const {return m_Error;}
T NotAvailable() const {return m_NotAvailable;}

private:
    T m_Error;
    T m_NotAvailable;
};

然后我想要的是,如果我在編譯時將該類的實例定義為

CDetectError<unsigned char>(0xFE, 0xFF);

然后,任何時候使用CDetectError<unsigned char>::Error()都會返回0xFE。

我建議如下使用模板專門化:

template<class T>
struct ErrorStart;

template<>
struct ErrorStart<unsigned char> {
    static const unsigned char Error = 0xFE;
};

然后,您可以說ErrorStart<unsigned int>::Error並始終獲得相同的結果。 您還可以在CDetectError的定義中使用該ErrorStart結構來重用代碼。

暫無
暫無

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

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