Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 链表ostream重载值_C++_C++11_Linked List - Fatal编程技术网

C++ 链表ostream重载值

C++ 链表ostream重载值,c++,c++11,linked-list,C++,C++11,Linked List,我对使用链表真的是个新手。我正试图使ostream Operator过载,以获得一个具有减容功能的双链接列表: template <class T> class DynamicList; template <class T> template <class T> class DynamicList { private: Node<T> *head; public: class Node { public: T*

我对使用链表真的是个新手。我正试图使ostream Operator过载,以获得一个具有减容功能的双链接列表:

template <class T> 
class DynamicList;

template <class T>

template <class T> 
class DynamicList 
{ 
private: 

Node<T> *head;

public: 
class Node 
{ 
 public:

    T* value;
    Node<T> *next;
    Node<T> *prev;

    Node(T val)
    {
        next = nullptr;
        prev = nullptr;
        value = &val;
    }

};
DynamicList();
~DynamicList();


void operator+=(const T);


friend std::ostream & operator<< <>(std::ostream &, const DynamicList<T> &); 
}; 
模板
阶级动态主义者;
模板
模板
阶级动态学家
{ 
私人:
节点*头;
公众:
类节点
{ 
公众:
T*值;
节点*下一步;
节点*prev;
节点(T值)
{
next=nullptr;
prev=nullptr;
值=&val;
}
};
DynamicList();
~DynamicList();
无效运算符+=(常数T);
friend std::ostream&operator您的问题在于:

T* value;
您正在存储值的地址。
问题是您正在存储超出范围的变量的地址

T vall = val;
Node<T>* newNode = new Node<T>(vall);
T* value;
T vall = val;
Node<T>* newNode = new Node<T>(vall);
class Node 
{ 
 public:

    T        value;    // Notice no star here.
    Node<T> *next; 
    Node<T> *prev;

    Node(T const& val)      // Add `const&` here to avoid a copy.
    {
        next = nullptr;
        prev = nullptr;
        value = val;        // Notice no and `&` here
    }  

};