模板类中使用iterator成员出错的解决办法

简介:
今天写一个模板类,出于的目的是要写的模板类原本是两个管理类,里面除了被管理的类不同之外其他全部相同,但是今后可能两者会被扩充,如果写成一个就不好的。
后来想想还是把它改写成为一个模板类才行。
在类当中有一个std::list的成员,我要定义一个访问器:
 std::list<T*>::iterator begin()  {return list.begin();};


但是结果是出现类似如下的编译错误:
error: type `std::vector<T, std::allocator<_CharT>; >;' is not derived from type `Record<T>;'
error: ISO C++ forbids declaration of `iterator' with no type

后来查到了,原来要在之前加一个  typename
正确代码如下:
typename std::list<T*>::iterator iter;
目录
相关文章
|
5月前
|
编译器
【Bug记录】list模拟实现const迭代器类
【Bug记录】list模拟实现const迭代器类
|
5月前
【Bug记录】模板生成错误:不属于vector的成员
【Bug记录】模板生成错误:不属于vector的成员
|
8月前
|
C语言
C语言函数传递了指针,值没有被修改的原因及解决方法
C语言函数中传递了指针作为参数,确切来说是传递了指向变量的内存地址作为参数,可经过函数内的修改之后,该指针指向的变量的值为什么不会被修改?就像下方这个函数:
132 1
|
存储 编译器 C++
【C++】C++11右值引用|新增默认成员函数|可变参数模版|lambda表达式(上)
【C++】C++11右值引用|新增默认成员函数|可变参数模版|lambda表达式(上)
|
编译器 C++
【C++】C++11右值引用|新增默认成员函数|可变参数模版|lambda表达式(中)
【C++】C++11右值引用|新增默认成员函数|可变参数模版|lambda表达式(中)
|
算法 编译器 C语言
【C++】C++11右值引用|新增默认成员函数|可变参数模版|lambda表达式(下)
【C++】C++11右值引用|新增默认成员函数|可变参数模版|lambda表达式(下)
|
Java 编译器
JDK21更新内容:匿名类和实例主方法
JDK21更新内容:匿名类和实例主方法
|
缓存 算法 编译器
【C#本质论 十】合式类型(一)重写Object成员及操作符重载(上)
【C#本质论 十】合式类型(一)重写Object成员及操作符重载(上)
89 0
|
缓存 算法 C#
【C#本质论 十】合式类型(一)重写Object成员及操作符重载(下)
【C#本质论 十】合式类型(一)重写Object成员及操作符重载(下)
108 0
|
安全 Java 程序员
JDK1.8新特性(八):还在重复写空指针检查代码?赶紧使用Optional吧!
结合Optional、Lambda表达式,可以明显看到重构之后,使得代码更加流畅连贯,并且提高代码整体可读性。
325 0
JDK1.8新特性(八):还在重复写空指针检查代码?赶紧使用Optional吧!