是否可以在编译时定义模板类的实现,然后在运行时使用?
这是我的班级
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。
答案 0 :(得分:0)
我建议使用模板专业化,如下所示:
template<class T>
struct ErrorStart;
template<>
struct ErrorStart<unsigned char> {
static const unsigned char Error = 0xFE;
};
然后您可以说ErrorStart<unsigned int>::Error
并始终获得相同的结果。
您还可以在ErrorStart
的定义中使用该CDetectError
结构来重用代码。