如何通过向量调用方法?

Mik*_*ley 1 c++ stl vector

如何调用存储在向量中的对象的方法?以下代码失败...

    ClassA* class_derived_a = new ClassDerivedA;
    ClassA* class_another_a = new ClassAnotherDerivedA;



  vector<ClassA*> test_vector;

  test_vector.push_back(class_derived_a);
  test_vector.push_back(class_another_a);

 for (vector<ClassA*>::iterator it = test_vector.begin(); it != test_vector.end(); it++)
    it->printOutput();
Run Code Online (Sandbox Code Playgroud)

该代码检索以下错误:

test3.cpp:47:错误:在 '*它.__ gnu_cxx :: __ normal_iterator <_Iterator,_container> ::操作符 - >与_Iterator = ClassA的**,_container =标准::矢量>' 请求成员 'printOutput',这是非类型'ClassA*'

问题似乎是it->printOutput();但目前我不知道如何正确调用该方法,有人知道吗?

对待米奇

小智 13

向量中的东西是指针.你需要:

(*it)->printOutput();
Run Code Online (Sandbox Code Playgroud)

它取消引用迭代器以从向量中获取指针,然后在指针上使用 - >来调用该函数.如果向量包含对象而不是指针,那么您在问题中显示的语法将起作用,在这种情况下,迭代器就像指向其中一个对象的指针一样.