g****r 发帖数: 35 | 1 假定
C
是预定义的 template class
用 list 保存一组 C 指针
std::list*> myList;
如何设计一个 template 函数,在其中采用 iterator 访问 myList 的成员?
template
void f(T& t)
{
std::list*> pos = myList.begin();
std::list*>::iterator pos; // This line give me
error
while (pos != myList.end())
{
(*pos).... blah blah
++pos;
}
}
编译器对 iterator 的定义行报错,如下:
error: parse error before `;' token
替换为
std::_List_iterator*> pos;
在 iMac 上 |
X****r 发帖数: 3557 | 2 typename std::list*>::iterator pos;
The compiler has no idea std::list*>::iterator is a type
without knowing what is T.
【在 g****r 的大作中提到】 : 假定 : C : 是预定义的 template class : 用 list 保存一组 C 指针 : std::list*> myList; : 如何设计一个 template 函数,在其中采用 iterator 访问 myList 的成员? : template : void f(T& t) : { : std::list*> pos = myList.begin();
|
g****r 发帖数: 35 | 3 谢回复,的确是这个原因。
【在 X****r 的大作中提到】 : typename std::list*>::iterator pos; : The compiler has no idea std::list*>::iterator is a type : without knowing what is T.
|
b*******e 发帖数: 1 | 4 问一下, 开始的两行什么意思?
std::list*> pos = myList.begin();
这里的pos 不久应该是iterator么
typename std::list*>::iterator pos;
为什么又declare一次? |