gpt4 book ai didi

c++ - 在模板类中定义迭代器时出现 STL 编译错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:09:11 26 4
gpt4 key购买 nike

下面的代码给出了错误:

error: type ‘std::list<T,std::allocator<_Tp1> >’ is not derived from type ‘Foo<T>’
error: expected ‘;’ before ‘iter’

#include <list>

template <class T> class Foo
{
public:
std::list<T>::iterator iter;

private:
std::list<T> elements;
};

为什么这是正确的?

最佳答案

你需要typename std::list<T>::iterator .这是因为 list取决于模板参数,因此编译器无法知道名称 iterator 到底是什么它将在其中(好吧,从技术上讲它可以知道,但是 C++ 标准不是那样工作的)。关键词typename告诉编译器后面是一个类型的名称。

关于c++ - 在模板类中定义迭代器时出现 STL 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2242821/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com