我想使用C++迭代器的接口,但沒有設法使其工作。C++迭代器,接口和指針
我有點迷路了什麼類型的矢量內容選擇。這需要成爲一個指針嗎?我必須做出一個「新的實現()」嗎?簡而言之,我不清楚,而且我也找不到有用的例子。
這裏是接口和實現(.h文件)。
class Interface{
public:
virtual int method() = 0;
};
class Implementation1 : public Interface{
public:
int method();
};
class Implementation2 : public Interface{
public:
int method();
};
.cpp文件:
#include "content.h"
int Implementation1::method(){
return 1;
}
int Implementation2::method(){
return 2;
}
而我的主要功能:
#include "content.h"
#include <vector>
#include <iostream>
using namespace std;
int main(void)
{
// create the vector and put elements in it
vector<Interface*> elements;
elements.push_back(new Implementation1());
elements.push_back(new Implementation1());
elements.push_back(new Implementation2());
// now iterate on them
vector<Interface*>::iterator iterator;
for(iterator = elements.begin(); iterator != elements.end(); ++iterator){
*iterator->method();
}
return 1;
}
的compilator的輸出:
main.cpp: In function ‘int main()’: main.cpp:19: error: request for member ‘method’ in ‘* iterator.__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator-> with _Iterator = Interface**, _Container = std::vector >’, which is of non-class type ‘Interface*’
約我什麼任何想法在這裏做錯了嗎?
「不工作」是什麼意思? – kennytm 2010-12-08 19:05:34
這是編譯失敗,是的。我已經添加了g ++的輸出。 – 2010-12-08 19:07:26