我正在做的就是声明一个指针,然后检查它是否指向任何东西:
#pragma once
#include <Node.h>
#include <stdio.h>
template <class NodeDataType>
class LinkedList
{
typedef Node<NodeDataType>* pNode;
private:
pNode pHead;
pNode pTail;
public:
void Add(NodeDataType* pNodeTypeData)
{
if(pHead)
{
printf("phead is initialized\n");
}
else
{
printf("phead is not initialized\n");
}
}
};
然后,在main()
中,我正在创建一个新的LinkedList对象,并调用Add
但是当我运行它时,它输出pHead is initialized
?
但我从来没有初始化它?
有人可以向我解释一下吗?
感谢
(主)
#include <stdio.h>
#include <LinkedList.h>
#include <GameObject.h>
int main(int argc, char** argv)
{
LinkedList<GameObject> meList;
meList.Add(new GameObject());
return 0;
}
答案 0 :(得分:1)
您不会在构造函数中或在原位初始化pHead
或pTail
。因此,在创建LinkedList
对象时,这些成员将具有任意值。所以,要么写下构造函数:
LinkedList()
:pHead(NULL), pTail(NULL)
{
}
如果您使用的是c ++ 11,则可以就地初始化它们:
private:
pNode pHead = nullptr;
pNode pTail = nullptr;