C++ 尝试使用嵌套结构返回迭代器时,会给出;不将类型命名为“;错误
我在类中定义一个私有结构的向量,然后尝试获取该类的私有函数以返回迭代器。简化代码:C++ 尝试使用嵌套结构返回迭代器时,会给出;不将类型命名为“;错误,c++,stl,C++,Stl,我在类中定义一个私有结构的向量,然后尝试获取该类的私有函数以返回迭代器。简化代码: #include <vector> class A { private: struct B { ... }; std::vector<B> vecB; typedef std::vector<B>::iterator BIter; BIter FindSomething(); }; BIter A::FindSome
#include <vector>
class A
{
private:
struct B {
...
};
std::vector<B> vecB;
typedef std::vector<B>::iterator BIter;
BIter FindSomething();
};
BIter A::FindSomething() { ... }
#包括
甲级
{
私人:
结构B{
...
};
std::vecB;
typedef std::vector::迭代器比特;
BIter FindSomething();
};
比特者A::FindSomething(){…}
不幸的是,当我尝试编译它时,我得到了一个错误:'BIter'没有命名类型
在最后一行。最后一行应该是
A::BIter A::FindSomething() { ... }
原因是
BIter
是A
类的内部,当编译器得到BIter A::FindSomething
的定义时,还没有为返回类型建立上下文(A
类),因此必须完全限定它。最后一行应该是
A::BIter A::FindSomething() { ... }
原因是BIter
是A
类的内部,当编译器得到BIter A::FindSomething
的定义时,还没有为返回类型建立上下文(A
类),因此必须完全限定它