C++ 取消对指针列表的迭代器的引用

C++ 取消对指针列表的迭代器的引用,c++,iterator,operator-precedence,C++,Iterator,Operator Precedence,我在尝试取消引用std::list的迭代器时遇到问题。 我的情况是:在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::list
的迭代器时遇到问题。 我的情况是:在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();
};
它无法编译,我不知道我的错误在哪里。错误消息是
“struct std::\u List\u iterator”没有名为“variable”的成员。

我还尝试了
**it.variable=true


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

运算符->
的值高于
运算符*
,因此
*it->variable=true被解释为
*(it->variable)=true,而
it->variable
无效

可以添加括号,如下所示

(*it) -> variable = true;

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

<代码>运算符->
的优先级高于
运算符*
。你需要妄想:
(*it)->variable
就是这样!非常感谢:)
(*it) -> variable = true;