如何解决C ++无法访问由向量的迭代器返回的类中的公共属性
所以我有一个叫做order的类,当用户下订单时,我会调用该类。 我还有另一个叫做订单簿的类,它是订单的向量。
我想尝试在收到新订单时遍历订单簿以检查是否存在重复,但是现在我被卡住遍历矢量。
我正在使用迭代器,并将新订单的符号与订单簿符号中的每个订单进行比较。
我读到迭代器就像一个指针,它将返回我的向量定单的内存位置,并且*它会给我定单本身,如果在其上添加.symbol,它应该给我定单的symbol属性,但现在甚至无法编译。
尝试时出现此错误:
use Illuminate\Support\Facades\Hash;
public static function checkAttempt($credentials):bool
{
$user = User:: where('login','like',$credentials['login'])->firstorFail();
$validPassword = Hash::check($credentials['password'],$user['password']);
return $user && $validPassword && $user['user_active'];
}
下面是代码,我删除了一堆与问题无关的东西。
../src/oncemore.cpp:123:40: error: 'std::vector<order>::iterator' {aka 'class __gnu_cxx::__normal_iterator<order*,std::vector<order> >'} has no member named 'symbol'
123 | if (_clientOrder.symbol.compare(*it.symbol)==0) {}
| ^~~~~~
解决方法
写作时
*it.symbol
由于.
的运算符优先级高于*
,因此表达式变为:
*(it.symbol)
,该错误表明迭代器没有名为symbol
的成员,这是事实。
您可以通过以下方法强制设置优先级:
(*it).symbol
甚至更好,通过使用适当的运算符:
it->symbol
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。