Buongiorno, sto cercando di realizzare una specie di calcolatrice e ho un problema nell usare una lista di oggetti (vector<Ogg> Oggetti) in un loop;
La classe Ogg:
Per ora ho scritto questa funzione che quando viene chiamata fa bloccare il programma con l' errore: "vector iterator not incrementable". Qualcuno sarebbe cosi gentile a dirmi dove sbaglio visto che e' un po' che non riesco a risolvere questo problema?
Se non si fosse capito il linguaggio e' C++
La classe Ogg:
Codice:
class Ogg
{
public:
float valore = 0;
char tipo = 'n';
};
Per ora ho scritto questa funzione che quando viene chiamata fa bloccare il programma con l' errore: "vector iterator not incrementable". Qualcuno sarebbe cosi gentile a dirmi dove sbaglio visto che e' un po' che non riesco a risolvere questo problema?
Codice:
void FindPriorityOperations()
{
int i = 0;
for each (Ogg o in Oggetti)
{
if (o.tipo == '*' || o.tipo == '/')
{
cout << i << " " << o.tipo;
float result;
switch (o.tipo)
{
case '*':
result = Oggetti[i - 1].valore * Oggetti[i+1].valore;
break;
case '/':
result = Oggetti[i - 1].valore / Oggetti[i + 1].valore;
break;
default:
cout << "FindPriorityOperations(): Segno sbagliato!"<<endl;
break;
}
Ogg temp;
temp.tipo = '+';
Oggetti.push_back(temp); // aggiunge un piu in coda
temp.tipo = 'f';
temp.valore = result;
Oggetti.push_back(temp); // aggiunge in risultato in coda
auto min = Oggetti.begin() + i - 1;
auto max = Oggetti.begin() + i + 1;
Oggetti.erase(min, max); // elimina gli oggetti usati
}
i++;
}
Se non si fosse capito il linguaggio e' C++