gpt4 book ai didi

c++ - 取消引用指针列表的迭代器

转载 作者:行者123 更新时间:2023-12-01 14:22:54 26 4
gpt4 key购买 nike

我在尝试取消引用 std::list<std::unique_ptr<MyClass>> 的迭代器时遇到问题.这是我的情况:在 headerFile.h 中我有

class MyClass{
public:
bool variable = false;
private:
};

然后在headerFile2.h中

#include "headerFile.h"
#include <memory>
#include <list>
class OtherClass{
public:
private:
std::list<std::unique_ptr<MyClass>> MyList;
void MyFuction();
};

最后,在 headerFile2.cpp 中,我尝试像这样使用 MyClass::variable:

#include "headerFile2.h"
void OtherClass::MyFunction(){
for(auto it = MyList.begin(); it != MyList.end(); it++){
*it -> variable = true;
}
}

它不会编译,我不知道我的错误在哪里。错误信息是 'struct std::_List_iterator<std::unique_ptr<MyClass> >' has no member named 'variable'

我也试过做 **it.variable = true; .

如有任何建议,我将不胜感激。

最佳答案

operator-> 有更高的 precedenceoperator*,所以 *it -> variable = true; 被解释为 *(it -> variable) = true;,而 it -> variable 无效。

您可以添加括号作为

(*it) -> variable = true;

**it.variable = true; 有类似的问题;你可以 (**it).variable = true;.

关于c++ - 取消引用指针列表的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61632992/

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