当前位置:  开发笔记 > 编程语言 > 正文

模板化类中的嵌套结构与std :: map :: const_iterator?

如何解决《模板化类中的嵌套结构与std::map::const_iterator?》经验,为你挑选了1个好方法。

下面的代码在声明迭代器的行生成语法错误:

template 
class A
{
  public:

    struct B
    {
       int x, y, z;
    };

    void a()
    {
        std::map::const_iterator itr; // error: ; expected before itr
    }

    std::vector v;
    std::map m;
};

这只有在A是模板化类时才会发生.这段代码出了什么问题?如果我将B移出A,代码编译得很好.



1> 小智..:

你需要一个类型名称:

 typename std::map::const_iterator itr;

迭代器是一个依赖类型(取决于B),当你遇到这种情况时,编译器要求你用一个typename来澄清它.

有问题的合理的讨论在这里.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有