问题描述
所以我有一个叫做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