Makro (czy można je ominąć)

0

Witam.
Mam takie oto makro:

#define ACTION(a,b,op)  (a) = stos.top(); stos.pop(); \
			(b) = stos.top(); stos.pop(); \
			stos.push((b)op(a));

Czy da radę zrobić coś podobnego za pomocą funkcji? Nie korzystając z preprocesora.

0

funkcja np. tak:

template<class T>
T poptop(stack<T>& s)
{
  T tmp = s.top();
  s.pop();
  return tmp;
}

najlepiej by było chyba zrobić swój własny stos który dziedziczyłby po tym stlowym i posiadałby podobnie działającą metodę

0

Chodziło mi raczej o to jak zastąpić ostatnią linijkę. W miejsce "op" wstawiam jakiś znak np. "+", "-", "*", nie bardzo wiem jak to zastąpić bez używania makra.

0

Możesz zrobić to albo, że podajesz tam wartość enum lub znak, ale musisz wtedy ręcznie uwzględnić każdy operator. Tak by się to działo automatycznie to się w C++ nie da (chyba, że byś dawał callbacki, ale to nie było by zbyt wygodne).

1 użytkowników online, w tym zalogowanych: 0, gości: 1