C ++模板静态指针到成员的初始化

时间:2009-03-28 10:07:33

标签: c++ templates static initialization

我有一个模板类,它有一个静态指向成员的指针,如下所示:

template<class T, T* T::*nextptr>
class Queue
{
    T* head;
    T* tail;
    static T* T::*pnext;
};

我的问题是如何编写静态指针到成员的初始化程序。我尝试了一个明显的案例:

template<class T, T* T::*nextptr> T* Queue<T, nextptr>::*pnext(nextptr);

但那没用。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

您真的需要一个与模板参数具有相同值的模板的静态成员变量吗?

唯一的用途是,如果它的价值在计划的整个生命周期内发生变化,但我真的想不出任何情况,这会产生更多的好处,而不是造成混乱。

答案 1 :(得分:3)

Queue<T, nextptr>::pnext被声明为T* T::*类型,因此它应如下所示:

template<class T, T* T::*nextptr>
T* T::* Queue<T, nextptr>::pnext(nextptr);