Ich möchte C++ 11 "für Schleife" verwenden, um Elemente eines Vektors zu iterieren, aber ich erhalte einige Fehler (begin() und end() Funktionen denke ich ist ein Problem). Danke!STL-Vektor: Iterate Elemente
#include <iostream>
#include <vector>
#include<iterator>
using namespace std;
template<typename TElement>
class MyClass {
private:
vector<TElement> vec;
public:
MyClass& operator+(TElement n) {
vec.push_back(n);
return *this;
}
int getS() {
return vec.size();
}
iterator begin() {//here is some problems
return vec.begin();
}
iterator end() {
return vec.end();
}
};
int main() {
MyClass<int> mm;
mm = mm + 10;
mm = mm + 9;
double avg = 0.0;
for (auto g : mm) { //begin() and end() functions error
avg += mm;
}
cout<< avg/mm.getS();
return 0;
}
Fehler:
C2675 unären '++': ':: Iterator std' wird nicht definiert, diesen Operator oder eine Umwandlung in einen Typ akzeptablen dem vordefinierten Operator
illegal Indirektion,
C2678 binäre '=': gefunden kein Operator, der einen linken Operanden vom Typ 'std :: Iterator' nimmt,
C2955 'std :: Iterator': Verwendung von Klassenvorlage requ ires Vorlage Argumentliste,
C2514 'std :: Iterator': Klasse hat keine Konstrukteuren
[Es ist nicht so einfach] (https://stackoverflow.com/questions/8054273/how-to-implement-anstl-style-iterator-and-vermeiden-common-petfalls). –
Mögliches Duplikat von [C++ 11 Foreach-Syntax und benutzerdefinierten Iterator] (http://StackOverflow.com/Questions/7562356/C11-Foreach-Syntax-and-Custom-iterator) –
Sie sollten immer die tatsächliche, vollständige, Fehlermeldungen. – renemilk