Alles, was ich tue, ist ein Zeiger deklarieren und dann, wenn seine zeigt auf etwas Überprüfung:C++ Zeiger nie noch initialisiert gibt so initialisiert
#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");
}
}
};
dann in main()
, ich bin ein neues LinkedList-Objekt zu machen und ruft Add
aber wenn ich es ausführe, gibt es pHead is initialized
aus? aber ich habe es nie initialisiert?
kann mir jemand das erklären?
dank
(Haupt)
#include <stdio.h>
#include <LinkedList.h>
#include <GameObject.h>
int main(int argc, char** argv)
{
LinkedList<GameObject> meList;
meList.Add(new GameObject());
return 0;
}
Es kann mehrere Dinge hier falsch sein, bitte den Code in Main Post auch so dass wir den Fehler für uns selbst sehen können – Curious
Blick auf diese https://stackoverflow.com/questions/1910832/why-arent-pointers-initialized-with-null-by-default –
Gibt es outputs "initialisiert" oder "nicht initialisiert '. Weil Sie "pHead" niemals initialisieren, sondern "if (pHead)" einchecken. –