【发布时间】:2017-07-11 23:11:54
【问题描述】:
我有一个带有静态 const 变量的类,我需要根据模板参数中的变量类型对它进行不同的初始化。有没有办法在没有专业化的情况下做到这一点?
在我的头文件中,我有:
template<class Item>
class CircularQueue {
public:
static const Item EMPTY_QUEUE;
...
尝试在 .cpp 文件中对其进行初始化:
template<typename Item> const Item CircularQueue<Item>::EMPTY_QUEUE = Item("-999");
我希望它初始化为 -999,无论它是 int、double 还是 string。但是,在上面的代码中,我收到“从 'const char' 转换为 'int' 会失去精度 [-fpermissive]”错误。
【问题讨论】:
-
也许可以创建一个模板化的初始化帮助器来代替它。
template<class T> class Initializer { ... }; -
不,您需要专业化。您不需要专门化整个
CircularQueue模板类,但您可以使用单独的专门化帮助器类来初始化EMPTY_QUEUE。
标签: c++ templates constants typename