2012-02-23 116 views
0

我写了一个使用两个类的书的例子。一个IntStack和一个名为MathStack的类。 IntStack包含所有常规的弹出和压入命令,而MathStack通过声明它公开声明来包含intStack类。 MathStack类使用IntStack及其弹出和推送对象执行数学运算。当我完成它时很好地工作,但接下来我想将我的堆栈更新为动态堆栈并再次使用此类。动态堆栈运行良好,但是我在写它时使用了模板。我相信这是MathStack导致的一些问题。如何在使用模板的类中包含另一个类?

我该怎么做才能使MathStack与模板堆栈友好?请指教。

MathStack声明:

#include "Stack.h" 

class MathStack : public Stack 
{ 
public: 
    //Constructor 

    //MathStack operations 
    void add(); 
    void sub(); 
    void mult(); 
    void div(); 
    void addAll(); 
    void multAll(); 
}; 

堆栈宣言:

template < class T> 
class Stack{ 
private: 
    List<T> aList; 
public: 
    Stack(); 
    Stack(const Stack<T> &aStack); 
    ~Stack(); 
    void push(T newItem); 
    void pop(); 
    void pop(T StackTop); 
    T getTop(); 
    bool isEmpty() const; 

}; //end List class 

回答

2

的基类必须是模板的一个特例,不只是一般的模板名称。

如果MathStack仅持有int S:

class MathStack : public Stack<int> // or some other type besides int 

MathStack本身应该是一个模板,如果它可以容纳任何东西Stack可以:

template< typename T > 
class MathStack : public Stack<T> 
+0

由于该诀窍。因为我只是计划用int来使用它,所以我选择了第一个。 – falnir 2012-02-23 15:49:16

0

充分利用MathStack模板,以及:

模板<类T>

类MathStack:P ublic堆栈< T>

{ ...

相关问题