Czesc:)
Dzieki za kod w Delphi, jak bede tego potzrebowal to na pewno sie zglosze.
Na grupie dyskusyjnej kolega podal mi taki przyklad:
#v+
#include <map>
#include <iostream>
class Obiekt {
int a;
public:
Obiekt(int _a=0):a(_a) {
}
int Interp() const {
return a;
}
Obiekt& operator+(const Obiekt& o) {
a+=o.a;
return *this;
};
};
std::map<std::string,Obiekt> zmienne;
Obiekt oblicz(const std::string &wyrazenie) {
Obiekt wynik;
char op=0;
for(int i=0;i<wyrazenie.size();++i) switch(wyrazenie[i]) {
case '+': op='+'; break;
case '-': op='-'; break;
default:
switch(op) {
case '+': wynik+=zmienne[wyrazenie[i]]; break;
case '-': wynik-=zmienne[wyrazenie[i]]; break;
default: wynik=zmienne[wyrazenie[i]]; break;
}
};
return wynik;
};
int main() {
zmienne["A"]=Obiekt(1);
zmienne["B"]=Obiekt(2);
std::cout << oblicz("A+B-A+B").Interp() << std::endl;
};
#v-
NIestety moj borland c 3.1 ma problemy ze skompilowaniem tego.
Nieznana dyrektywa +v i nie posiada takiego pliku map.h.
Moze Ty wiesz skad go zdobyc? Szukalem na necie ale jest duuuzo wersji.
Pzodrawiam,
Wodzu
Zerknałem do kodu i taka mała uwaga, w deklaracji
std::map<std::string,Obiekt> zmienne;
jest bład, ponieważ w klasie Obiekt akcesor jest typu int, a nie string, kluczem w kontenerze map powinien byc int, a nie string, czyli :
std::map<std::int,Obiekt> zmienne;