c++ - 无法使用模板编译 std::list 迭代器

标签 c++ stl

当我尝试编译这个时,我得到了这个错误:

error: expected `;' before 'it'

为什么我不能声明这个迭代器?问题出在哪里?

#include <list>

template <typename Z>
class LBFuncBase: public LBBaseBlock<Z>
{
    void Something() {
         std::list<LBBaseBlock< Z >* >::iterator it;
    }
};

最佳答案

尝试:

typename std::list<LBBaseBlock< Z >* >::iterator it;

编辑:

有关解释,请参阅“Why do you sometimes need to write typename”。

关于c++ - 无法使用模板编译 std::list 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1911162/

相关文章:

c++ - 不可变的 C++ 容器类

c++ - STL map 和 set 中的排序顺序

c++ - vector 的结束迭代器内容

c++ - std::map 迭代器到自身

c++ - 什么时候在 C++ 中释放变量占用的空间?

c++ - 在 OSX 上的共享库中定义 main

c++ - 逐行读取文件并存储为整数变量 C++

c++ - 读取 infile 到 xcode

c++ - printf() 混淆 - 尝试打印字符串时打印 (null) 并在打印缓冲区时打印正确的值

c++ - STL upper_bound 定义不一致?