Read Access Violation (this->headPtr was 0xCDCDCDCD)

<p>Remove (T &item) is supposed to remove the headPtr and store that "item value" in "item" and return true, otherwise return false if no elements are in the queue. I get a "read access violation error" in this function. Here is the class and function definitions:</p><pre><br /><code>class SharedQueue {<br />public:<br /> SharedQueue();<br /> ~SharedQueue();<br /><br /> //Return true if the queue is empty<br /> bool IsEmpty() const;<br /><br /> //Enqueue the next item at the tail of the queue.<br /> void Add(T value);<br /><br /> //Dequeue the next queue element and store it in "item" variable. The function returns false if the queue is empty and no item can be retrieved.<br /> bool Remove(T &item);<br /> void Print();<br />private:<br /> struct QueueItem {<br /> T item;<br /> QueueItem *next;<br /> };<br /> //Fill in the The private data members.<br /> QueueItem *headPtr;<br /> QueueItem *tailPtr;<br />};<br /><br />template <typename T> SharedQueue<T>::SharedQueue() {<br /> headPtr = NULL;<br /> tailPtr = NULL;<br />}<br /><br />template <typename T>SharedQueue<T>::~SharedQueue() {<br /> QueueItem *temp;<br /> while (headPtr != NULL) {<br /> temp = headPtr;<br /> headPtr = headPtr->next;<br /> delete temp;<br /> }<br />}<br /><br />template <typename T> bool SharedQueue<T>::IsEmpty() const {<br /> if (headPtr == NULL && tailPtr == NULL) {<br /> return true;<br /> }<br /> return false;<br />}<br /><br />template <typename T> void SharedQueue<T>::Add(T aValue) {<br /> if (headPtr == NULL) {<br /> QueueItem *newItem = new QueueItem;<br /> newItem->item = aValue;<br /> tailPtr = headPtr = newItem;<br /> }<br /> else {<br /> QueueItem *newItem = new QueueItem;<br /> newItem->item = aValue;<br /> tailPtr->next = newItem;<br /> tailPtr = tailPtr->next;<br /> }<br />}<br /><br />template <typename T> bool SharedQueue<T>::Remove(T &item) {<br /> if (headPtr == NULL) {<br /> return false;<br /> }<br /> else {<br /> QueueItem temp = *headPtr;<br /> item = headPtr->item;<br /> delete headPtr;<br /> headPtr = temp.next;<br /> return true;<br /> }<br />}<br /><br />template <typename T> void SharedQueue<T>::Print() {<br /> QueueItem *temp = headPtr;<br /> while (temp != NULL) {<br /> std::cout << temp->item << "\n";<br /> temp = temp->next;<br /> }<br />}<br /></code><br /></pre><br /><h2>Click here view more answers <a href="http://ift.tt/1OrGH8j">http://ift.tt/1OrGH8j</a></h2>

Nhận xét

Bài đăng phổ biến từ blog này

Align div to bottom of the page in bootstrap

Align elements inside an tag vertically

Javascript is unable to stop page loading