如何调用存储在向量中的对象的方法?以下代码失败...
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)
它取消引用迭代器以从向量中获取指针,然后在指针上使用 - >来调用该函数.如果向量包含对象而不是指针,那么您在问题中显示的语法将起作用,在这种情况下,迭代器就像指向其中一个对象的指针一样.
| 归档时间: |
|
| 查看次数: |
1560 次 |
| 最近记录: |