定义模板类的实例
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
结构来重用代码。
相关文章:
- 对显式实例化的模板函数的未定义引用
- 未定义的类模板不会实例化以检查友元函数
- 将自定义 QMap 模板实例化以人类可读的形式保存在 QSettings 中
- OSX clang++:用于 cpp 文件中显式实例化模板的体系结构x86_64的未定义符号
- "extern"声明以及带有和不带参数列表的类模板实例的后续定义
- 何时需要实例化函数模板定义?
- 使用用户定义的类型 UDT 实例化 std::atomic<>。如果 UDT 具有虚函数,则 l 墨水将失败。为什么?
- 实例化具有不完整类型的类模板格式不正确(如果该类型是在之后定义的)
- 将类成员函数的模板定义放在 CPP 文件中C++隐式实例化而不是 .H 允许吗?
- C++ 为什么在定义的编译和链接之前引用外部实例的程序
- 有没有办法根据命令行参数定义数组大小?运行时与编译时实例化?
- 如何使用自定义流操纵器在类实例中保存数据
- 是否是从等待返回到悬而未决的"this"实例的未定义行为?
- XCode 警告"此处需要实例化变量'Singleton:<Foo>:_instance',但没有可用的定义
- 为什么c++允许成员函数定义中实例的私有成员访问
- 即使我正在.cpp文件中实例化一个伪对象,.cpp文件内模板函数的定义也不起作用
- C++:如何在结构中定义类实例.类具有参数化的构造函数
- 自定义链表const_iterator无法遍历列表的非const实例
- 每个类实例的自定义函数 (C++)
- 下面哪些c++内置操作是为类实例定义的?