在类模板中使用 typedef 时出错
error using typedef inside class template
我有一个基于链接列表的队列/堆栈程序,我正在尝试将其转换为模板(我有.h和相应的.template文件,用于队列,堆栈,链接列表和节点(。但是,当我尝试实例化队列gcc时,会抛出此错误:
LinkedList.template: In instantiation of ‘class LinkedList<int>’:
Queue.h:11:45: required from ‘class Queue<int>’
Grades.cpp:15:13: required from here
LinkedList.template:66:6: error: no type named ‘value_type’ in ‘class node<int>’
void LinkedList<value_type>::addToHead(typename node<value_type>::value_type& entry)
这是我在错误中引用的实例化,尽管我认为这不是问题所在:
void LinkedList<value_type>::addToHead(typename node<value_type>::value_type& entry)
{
head = new node<value_type>(entry, head);
if (tail == NULL) {tail = head;}
current = head;
}
这是我对value_type的 typedef 声明:
template <typename T>
class Queue
{
public:
typedef typename LinkedList<T>::value_type value_type;
...
}
这是将 typedef 用于我正在尝试执行的操作的正确方法吗?它应该从LinkedList.h获取模板类型:
template <typename value_type>
class LinkedList
{
...
}
模板参数的名称在模板外部不可见。您需要一个 typedef 来提供该名称:
template <class T>
class LinkedList
{
typedef T value_type;
...
};
相关文章:
- C++:TypeDef使用元组
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- 分段错误当我试图运行程序时出错
- 使用dynamic_cast和构造函数时出错
- CHECK(调用)函数在Google Colab中出错
- 用pybind11包装C++抽象类时出错
- 有没有一种方法可以通过"typedef"为重新定义的基本类型定义特征和强制转换运算符
- 为x86而非x64编译时出错
- 从R调用C++函数并对其进行集成时出错
- 在类模板中使用 typedef 时出错
- 在模板化类的typedef之后使用typename初始化函数时出错
- 在标头中添加typedef时出错