c++ interface