add cpp version menu composite pattern
add cpp version menuiterator composite pattern