如何遍历std :: list <MyClass*>并从迭代器获取该类中的方法?

Lor*_*ner 11 c++

如果我有这个清单,

typedef std::list<MyClass *> listMyClass;
Run Code Online (Sandbox Code Playgroud)

我如何迭代它们并获得该类中的方法?

这是我尝试过的,但事实并非如此:( MyClass :: PrintMeOut()是一个公共方法)

for(
    listMyClass::iterator listMyClassIter = listMyClass.begin();
    listMyClassIter != listMyClass.end();
    listMyClassIter ++)
{
    listMyClassIter->PrintMeOut();  
}     
Run Code Online (Sandbox Code Playgroud)

Phi*_*ler 21

使用此方法:

(*listMyClassIter)->PrintMeOut();
Run Code Online (Sandbox Code Playgroud)


Mar*_*ork 11

for_each和函数指针:

    std::for_each(  listMyClass.begin(),
                    listMyClass.end(),
                    std::mem_fun(&MyClass::PrintMeOut)
                 );
Run Code Online (Sandbox Code Playgroud)

我更喜欢使用for_each()构造而不是编写自己的循环.
它使它看起来整洁,并做了所有我需要额外代码的东西.

  1. 只调用end()一次而不是每次迭代.
  2. 记住使用预增量而不是后增量.
  3. 需要计算我的迭代器的实际类型.
  4. 我相信在这里早上还有更多.