我有一个模板类,它有一个静态指向成员的指针,如下所示:
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);
但那没用。有什么想法吗?
答案 0 :(得分:4)
您真的需要一个与模板参数具有相同值的模板的静态成员变量吗?
唯一的用途是,如果它的价值在计划的整个生命周期内发生变化,但我真的想不出任何情况,这会产生更多的好处,而不是造成混乱。
答案 1 :(得分:3)
Queue<T, nextptr>::pnext
被声明为T* T::*
类型,因此它应如下所示:
template<class T, T* T::*nextptr>
T* T::* Queue<T, nextptr>::pnext(nextptr);