我不能在模板类中使用std容器迭代器。
我得到了这个错误:
错误C2061:语法错误:标识符'iterator'
错误C2238:';'
这里是源代码:
#include <list>
#include <functional>
#include <memory>
template<typename TParam>
class MyClass
{
public:
using TFunction = std::function<void(TParam)>;
using TContainer = std::list<TFunction>;
using TIterator = TContainer::iterator; // compilation error here!
};
如何在模板化类中使用容器的迭代器?
答案 0 :(得分:1)
您需要 typename 关键字
using TIterator = typename TContainer::iterator;
根据TContainer的最终结果,迭代器可以是静态成员或嵌套类型。除非使用typename关键字明确指定,否则编译器将假定它不是类型。有关详细信息,请参阅here。