模板类中的typedef语句

时间:2018-10-17 10:20:17

标签: c++

我正在尝试将我的一个文件转换为模板,但是typedef语句给我带来了一些麻烦。我收到的错误是:

error: declaration of ‘typedef typename LinkedList<value_type>::value_type Queue<value_type>::value_type’ shadows template parameter

在这种情况下,我对如何使用typedef感到困惑,因为如果我“取消模板化”文件,它将认为此文件中引用的其他类的value_type未定义。

我的代码:

#include <cstdlib>
#include "LinkedList.h"
#include "Node.h"
template <typename value_type>
class Queue
{
public:
typedef typename LinkedList<value_type>::value_type value_type;

Queue();
void enqueue(const value_type& obj);
value_type dequeue();

value_type& front();

bool is_empty() const;
int size() const;

private:
LinkedList<value_type> data;
int used;
};

1 个答案:

答案 0 :(得分:5)

您的问题是value_type已经是已知类型,它是您的模板参数。

您无法再对其进行重新定义,尤其是对其他类型的重新定义。

我有相同的“问题”,因为我希望另一个类像您一样检索用于模板的类型,在这种情况下,请将模板参数重命名为其他名称。