int main(int argc, char *argv[]) { VariableList* varList = new VariableList(); Variable* a = new Variable("a"); Variable* b = new Variable("b"); Expression* pattern = new Plus(a, b); Variable* x = new Variable("x"); Variable* y = new Variable("y"); Expression* exp = new Plus(x, y); if (exp->matches(pattern, varList)) { VariableListNode* now; for (now = varList->head; now; now = now->next) { cout << now->variable->name << " = "; if (now->variable->value->getExpType() == TypeVariable) { Variable* var = (Variable*)now->variable->value; cout << var->name << endl; } else cout << "not a variable" << endl; } } else cout << "No match" << endl; return EXIT_SUCCESS; }