add c++ version
add c++ version