Сообщение от
rudvil
Можно пример, если не трудно?)
Если речь идет о ретурне в функц. то у меня такая-же ошибка потом выскакивает =/
std::stack<Tree> postfixTree;
Ты объявил стек локально. Значит после выхода из функции будет вызван деструктор, что должно удалить все записи в стеке. Поэтому индексация хоть и будет работать, но вот обращение будет по адресам типа fefefefe и прочими подобными. Ах да. Еще важнее момент, что ты объявил стек std::stack<Tree> а не std::stack<Tree*>. Таким образом элементы так же являются локальными для данной функции объектами.
Починить можно так - в функции перед выходом ты должен сделать не просто
tree.tree = &postfixTree.top();
Ты должен tree.tree = new Tree [postfixTree.size()];
И в цикле скопировать элементы.
А для понимания проблемы сделай контсруктор и деструктор Tree, которые в консоль выводят сообщения и посмотри, что появится в консоли при выходе из функции...
или другой враиант - делаешь типа такого:
Код:
struct Tree {
tree_type treetype;
int treesize;
char* value;
std::stack<Tree*> tree;
Tree () {
this->treesize = 0;
this->value = 0;
this->tree = 0;
}
};