gpt4 book ai didi

c++ - 为什么 vector::iterator 有效而 vector*::iterator 无效?

转载 作者:行者123 更新时间:2023-11-30 00:41:35 26 4
gpt4 key购买 nike

我有这三个相关的类(class)成员:

vector<Frame*>* poolFrames;
vector<Frame*>*::iterator frameIterator;
vector<vector<Frame*>::iterator>* poolFrameIterators;

当我编译时,gcc 告诉我

error: invalid use of ‘::’ error: expected ‘;’ before ‘frameIterator’

引用中间那一行,我在这里定义了 frameIterators。当我松开指向 vector 的指针并将其设为 vector::iterator 时,它就消失了。但是,我希望它们成为指针。是否有特殊的方法来定义我想要的数据类型,或者我是否需要使用 vector::iterator 然后取消引用?

最佳答案

我明白你想做什么了。您已将 poolFrames 定义为指向 vector 的指针。然后你想将 frameIterator 定义为 poolFrames 的迭代器。由于 poolFrames 是一个指针,您认为您需要一个特殊的指向 vector 的迭代器,但您错了。

vector 迭代器是 vector 迭代器是 vector 迭代器,无论您最初如何设法引用 vector 。您需要 frameIterator 成为一个简单的迭代器:

vector<Data*>::iterator frameIterator;

要为该变量赋值,您需要取消引用您的 vector 指针,如下所示:

frameIterator = poolFrames->begin();

如果 poolFrames 是 vector 而不是指向 vector 的指针,您将改用点运算符:poolFrames.begin()

关于c++ - 为什么 vector<Data*>::iterator 有效而 vector<Data*>*::iterator 无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3338764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com