首页 > 解决方案 > 模板类中的 typedef 语句

问题描述

我正在尝试将我的一个文件转换为模板,但 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;
};

标签: c++

解决方案


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

你不能有其他任何东西来重新定义它,尤其是对不同的类型。

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


推荐阅读