首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-03-22 
模板类静态类型初始化问题templatetypenameTclassNODE{public:TdataNODE*preNODE*nextstaticNODE*fir

模板类静态类型初始化问题
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;
}
};

热点排行