c++ - 指针 vector 的迭代器未正确解除引用

标签 c++ vector iterator

这是我的问题:

我有一个 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

为什么会出现这些错误?

谢谢

最佳答案

因为迭代器就像一个指针,在本例中是一个指针指向一个指针

你需要:

(*it)->setText("Hello World"); // dereference iterator, dereference pointer

关于c++ - 指针 vector 的迭代器未正确解除引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3920309/

相关文章:

c++ - 即使键相等,hash_map 也会保存每个键/值对

c++ - 创建随机二进制字符串 : how to remove null character '\0' from to_string() before inserting to another string

c++ - 在包含正整数和负整数的 vector 中找到最小的缺失整数?

c++ - 似乎无法在 C++ 中正确调用函数

c++ - 为什么我需要做 'using namespace std' 而不是 'using std::cout' ?

c++ - 删除后重建列表迭代器

c++ - 从 vector 中删除元素 – rbegin() 与 begin()

C++ 算法按以下顺序切换数组的顺序 : [Last, First, Last - 1, First + 1...]

c++ - 如何使用循环将 vector 插入队列<vector<int>>?

c++ - 将一串数字解析为整数 vector 的最快方法