根据堆栈类实现Queue类的复制构造函数

时间:2014-02-12 08:48:40

标签: c++ copy-constructor

我有我的堆栈类,我在其中实现了该类中定义的节点的深层副本。 现在我必须实现Queue类的复制构造函数,它调用Stack类的复制构造函数。

所以这是我的Stack.h和Stack.C(我使用LINUX):

#ifndef STACK_H
#define STACK_H
#include "MyException.h"
#include <iostream>

using namespace std;

template<class T>
class Stack;

template<class T>
ostream& operator<<(ostream&,Stack<T>&);

template<class T>
class Stack
{
public:
    friend ostream& operator<< <T>(ostream&,Stack<T>&);

    /*The constructor for the Stack class*/
    Stack();

    /*The copy constructor*/
    Stack(const Stack<T>& other);

    Stack<T>& operator=(const Stack<T>& other);

    ~Stack();

    void push(const T& el);

    T pop();

    bool isEmpty();

private:
    /*The node class.*/
    class Node
    {
        public:
            Node(const T& data, Node* n = 0)
            {
                element = data;
                next = n;
            }

            T element;
            Node* next;
    };

    /*The top of the stack*/
    Node* top;

 };
#include "Stack.C"
#endif

你可以假设所有方法都可以正常工作。

我有一个Queue类,其定义如下:

#ifndef QUEUE_H
#define QUEUE_H
#include <iostream>
#include "MyException.h"
#include "Stack.h"

using namespace std;

template<class T>
class Queue;

template<class T>
ostream& operator<<(ostream&,Queue<T>&);

template<class T>
class Queue
{
public:
    friend ostream& operator<< <T>(ostream&,Queue<T>&);

    Queue();

    Queue(const Queue<T>& other);

    Queue<T>& operator=(const Queue<T>& other);

    /*The destructor*/
    ~Queue();

    void enqueue(const T& el);

    T dequeue();

    bool isEmpty();

private:
    /*You must store your elements in this stack*/
    Stack<T>* stack;

};
#include "Queue.C"
#endif

我已经实现了我的复制构造函数:

template<class T>
Queue<T>::Queue(const Queue<T>& other)
 {
Stack<T> *test = new Stack<T>(*other.stack);
 }

当我在Stack类中测试我的复制构造函数时,一切正常,但是当我在Queue类中测试我的复制构造函数时,我得到了一个Segmentation错误,问题是什么?

谢谢

0 个答案:

没有答案