读书人

模板类静态类型初始化有关问题

发布时间: 2012-03-22 17:43:57 作者: rapoo

模板类静态类型初始化问题
template <typename T>
class NODE
{
public:
T data;
NODE *pre;
NODE *next;
static NODE *first;

public:
NODE(T _data)
{
data = _data;
next = first;
first-> pre = this;
first = this;
}
};
请问怎么初始化静态变量first指向一NODE类型变量?分不多了!~

[解决办法]
1.
template <typename T>
NODE <T> * NODE <T> ::first = NULL;

2.
template <typename T>
NODE <T> * NODE <T> ::first = new NODE <T> ; //需要提供默认构造函数NODE <T> ();

3.
template <typename T>
NODE <T> * NODE <T> ::first = new NODE <T> (0); //这个, 按楼主的代码, 肯定有运行时错误,
因为在NODE <T> (T _data)中引用了first-> pre, 而此时first还没建好呢:).

[解决办法]
同意lightnut() 。

我认为这样能行:

template <typename T>
NODE <T> * NODE <T> ::first = NULL;

template <typename T>
class NODE
{
public:
T data;
NODE *pre;
NODE *next;
static NODE *first;

public:
NODE(T _data)
{
data = _data;
next = first;
pre = NULL;
if( first != NULL)
first-> pre = this;

first = this;
}
};

读书人网 >C++

热点推荐