Ali*_*ami 4 c++ iterator list operator-precedence
我试图迭代一个list指针:
int main () {
list<Game*> Games;
Games = build_list_from_file(); //Reading the games.info file
list<Game*>::iterator it = Games.begin();
it++;
cout << *it->get_name() << endl ;
// ...
}
Run Code Online (Sandbox Code Playgroud)
当我编译它时,我有这个错误:
error: request for member ‘get_name’ in ‘* it.std::_List_iterator<_Tp>::operator-><Game*>()’, which is of pointer type ‘Game*’ (maybe you meant to use ‘->’ ?)
cout << *it->get_name() << endl ;
^
Run Code Online (Sandbox Code Playgroud)
Game是一个具有get_name成员函数的类,它返回游戏的名称.我该怎么做才能编译?
您遇到了运营商优先问题.->优先级高于*,所以你真的在做:
*(it->get_name())
Run Code Online (Sandbox Code Playgroud)
因为Game*没有任何成员,所以没有编译,更不用说了get_name.您需要先取消引用,需要括起来:
(*it)->get_name()
Run Code Online (Sandbox Code Playgroud)