【发布时间】:2011-04-24 15:13:04
【问题描述】:
这是我的问题:
我有一个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
为什么会出现这些错误?
谢谢
【问题讨论】:
-
如果 Agui 像大多数其他 GUI 框架一样工作,那么这些小部件是自毁的。那么使用
shared_ptr将是一个非常糟糕的主意。但这取决于 Agui,不管那是什么。 -
你是对的,它们是自毁的