如何在使用模板的类中包含另一个类?
问题描述:
我写了一个使用两个类的书的例子。一个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
答
的基类必须是模板的一个特例,不只是一般的模板名称。
如果MathStack
仅持有int
S:
class MathStack : public Stack<int> // or some other type besides int
MathStack
本身应该是一个模板,如果它可以容纳任何东西Stack
可以:
template< typename T >
class MathStack : public Stack<T>
答
充分利用MathStack模板,以及:
模板<类T>
类MathStack:P ublic堆栈< T>
{ ...
由于该诀窍。因为我只是计划用int来使用它,所以我选择了第一个。 – falnir 2012-02-23 15:49:16