Try changing line 106 which reads; SG_Tree *left(m_left), *right(m_right); to; SG_Tree *left = m_left, *right = m_right; ... the syntax should be equivalent. If that doesn't work, then SG_Tree must be an undefined type, or something. Douglas Toltzman