这是我的问题:

我有一个std::vector<AguiWidgetBase*>,用于跟踪子控件。

我有以下两个函数可返回迭代器:

std::vector<AguiWidgetBase*>::const_iterator AguiWidgetBase::getChildBeginIterator() const
{
    return children.begin();
}

std::vector<AguiWidgetBase*>::const_iterator AguiWidgetBase::getChildEndIterator() const
{
    return children.end();
}

然后,我像这样使用它:
for(std::vector<AguiWidgetBase*>::const_iterator it = box->getChildBeginIterator();
    it != box->getChildEndIterator(); ++it)
{
    it->setText("Hello World");
}

我得到这些错误:
Error   3   error C2039: 'setText' : is not a member of 'std::_Vector_const_iterator<_Ty,_Alloc>'   c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\main.cpp   112
Error   2   error C2839: invalid return type 'AguiWidgetBase *const *' for overloaded 'operator ->' c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\main.cpp   112

为什么会给我这些错误?

谢谢

最佳答案



不直接,但是您可以执行以下操作:

for(std::vector<AguiWidgetBase*>::const_iterator it = box->getChildBeginIterator();
    it != box->getChildEndIterator(); ++it)
{
    AguiWidgetBase* p = *it;

    p->setText("Hello World");
}

10-04 16:48