выражение дерева - настройка узла

Меня смущает проект, который я изучаю на курсе. Мне нужно построить дерево-выражение, я знаю, как работает алгоритм, но у меня возникают трудности с настройкой узлов.

Инструктор дал нам этот класс: Expression Node Где у него есть 2 других подкласса: Constant Node и Operator Node?

и в «классе дерева выражений»: где я строю древовидное выражение? У меня есть стек с этим типом: Expression Node

мой вопрос: после того, как я назначу оператор или константу, как я могу затолкнуть его в стек, так как типы разные.

я работаю с С++ спасибо.


person Makaveli    schedule 18.07.2016    source источник


Ответы (2)


Примените полиморфизм: добавьте указатели (или ссылки) на свои узлы. Поскольку ваш стек содержит элементы типа "ExpressionNode", он может принимать все производные от него типы (Constant и Operator).

person Clusty    schedule 18.07.2016

Если у вас есть доступ к boost, boost::variant — это то, что вам нужно. См. это, это OO версия объединения.

заголовочный файл

#include <boost/variant.hpp>

stack<boost::variant<int,char>> s;
s.push('+');
s.push(1);
person Raghavendar Reddy    schedule 18.07.2016