c++ - 模板类中的 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;
};
解决方案
您的问题是它value_type
已经是已知类型,它是您的模板参数。
你不能有其他任何东西来重新定义它,尤其是对不同的类型。
我有同样的“问题”,因为我希望另一个类像你一样检索用于模板的类型,在这种情况下,将模板参数重命名为其他东西。
推荐阅读
- php - 无法更新表单数据laravel
- java - 使用 Java 流根据日期间隔对列表数据进行分组并对金额字段求和
- http - 颤振http.get没有执行
- video - 碎片 MP4 不在 ffplay/QuickTime/Safari 中播放,但在 VLC 中播放
- c++ - 为什么“结果”值总是为零?
- excel - 字典键中的重复项。合并字典值
- apache-spark - (Windows 10) 例外:Java 网关进程在发送其端口号之前退出
- c# - Swagger 无法显示也找不到,.Net Core 3.1 + Angular on Nginx
- javascript - 使状态与快速发生的事件保持同步
- node.js - InvalidLocationConstraint 使用 node.js aws-sdk 在 af-south-1(开普敦)区域创建存储桶