gpt4 book ai didi

c++ - 迭代器解引用问题

转载 作者:搜寻专家 更新时间:2023-10-31 00:23:34 24 4
gpt4 key购买 nike

如果我有

list<NS*> v;  
typename list<NS*>::iterator it;
for(it = v.begin();it!=v.end();++it){
cout<<**it.ns_member1<<endl; // does not compile
NS ns = **it;
cout<<ns.ns_member1<<endl; // this compiles.
}

为什么会这样?

最佳答案

取消引用(“*”)的优先级低于“.”运算符,所以这一行:

cout<<**it.ns_member1<<endl;

结果是这样的:

cout << (**(it.ns_member1)) <<endl; // ERROR

我建议这样做:

cout << (*it)->ns_member1 << endl;

确实没有必要两次使用取消引用运算符,一次后跟 '->' 运算符会做同样的事情并且应该对大多数人来说更清楚。

HTH.

关于c++ - 迭代器解引用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1786884/

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