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;