我正在尝试制作一个封装 MinPriorityQueue 和 MaxPriorityQueue 的接口。两者都有一个迭代器和 const_iterator(这就是为什么我需要一个自己的优先级队列而不是在不允许迭代访问的标准库中)。
template <typename T> class PriorityQueueInterface
{
public:
typename ArrayList<T>::iterator iterator;
typename ArrayList<T>::const_iterator const_iterator;
virtual void insert( T item ) = 0;
virtual bool get( T key, T& value ) const = 0;
virtual T front() const = 0;
virtual T back() const = 0;
virtual ~PriorityQueueInterface() {}
};
ArrayList 是我自己的创作。
这给出了一个错误:
错误 1 错误 C2143:语法错误:缺少 ';' 在'<'之前
我不明白,因为如果我不定义这些类型名,它就可以工作。如果类不是抽象的,类型名就可以工作,但我希望接口包含这些迭代器。
编辑:好的,我想我找到了问题,它与这段代码无关。我重新创建了原始帖子,我希望有人仍然会觉得它有用。