我有这个简单的代码:
#include <vector>
class A
{
private:
struct B{int x;};
public:
std::vector<B> v;
};
int main()
{
A a;
for (std::vector<A::B>::iterator it = a.v.begin(); it != a.v.end(); ++it)
{
it->x = 0;
}
for (auto it = a.v.begin(); it != a.v.end(); ++it)
{
it->x = 0;
}
}
正如预期的那样,我在第一个for循环中构建了错误--A :: B是私有的,但第二个for循环在Visual Studio 2010,2012和2013中编译得很好。这是正常行为还是编译器中的错误?< / p>