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

4

我有一个模板类,其中包含一个静态成员指针,如下所示:

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个回答

4

你真的需要一个模板的静态成员变量,它的值和模板参数相同吗?

唯一的用途是如果其值在程序的生命周期内发生变化,但我真的想不到任何情况会产生更多的好处而不是混淆。


谢谢您的洞察,我实际上并不需要静态成员变量,只需要模板参数即可。 - agazso
如果他只知道类型,他可以利用它。然后他可以使用 Type::pnext;(就像那些类型定义一样),但我建议他将指针设为 const。即使如此,我仍然更喜欢静态内联函数。 - Johannes Schaub - litb

3

Queue<T, nextptr>::pnext被声明为类型T* T::*,所以它应该像这样:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接