尝试返回带有嵌套结构的迭代器,会出现“not name name”错误

时间:2011-02-21 18:04:56

标签: c++ stl

我在一个类中定义一个私有结构的向量,然后尝试获取该类的私有函数以返回一个迭代器。简化代码:

#include <vector>

class A
{
private:
    struct B {
        ...
    };
    std::vector<B> vecB;
    typedef std::vector<B>::iterator BIter;

    BIter FindSomething();
};

BIter A::FindSomething() { ... }

不幸的是,当我尝试编译时,我收到错误:'BIter' does not name a type 在最后一行。

1 个答案:

答案 0 :(得分:4)

最后一行应该是

A::BIter A::FindSomething() { ... }

原因是BIterA类的内部,当编译器到达BIter A::FindSomething的定义时,上下文(A类)具有没有为返回类型建立,所以你必须完全符合它。