[英]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.