Hier ist mein Problem:Iterator für Vektor von Zeigern nicht dereferencing richtig
Ich habe ein std::vector<AguiWidgetBase*>
die verwendet wird, den Überblick über geordneten Steuerelemente zu halten.
Ich habe diese beiden Funktionen Iteratoren zurück:
std::vector<AguiWidgetBase*>::const_iterator AguiWidgetBase::getChildBeginIterator() const
{
return children.begin();
}
std::vector<AguiWidgetBase*>::const_iterator AguiWidgetBase::getChildEndIterator() const
{
return children.end();
}
ich es dann wie folgt verwenden:
for(std::vector<AguiWidgetBase*>::const_iterator it = box->getChildBeginIterator();
it != box->getChildEndIterator(); ++it)
{
it->setText("Hello World");
}
und ich bekomme diese Fehler:
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
Warum ist es gib mir diese Fehler?
Dank
Wenn Agui wie die meisten anderen GUI-Frameworks funktioniert, sind diese Widgets selbstzerstörerisch. Es wäre dann eine wirklich schlechte Idee, 'shared_ptr' zu verwenden. Aber es hängt vom Agui ab, was auch immer das ist. –
Sie haben Recht, sie sind selbstzerstörerisch – jmasterx