1. все-таки round(const std::string &unit). зачем вам лишняя локальная копия и расходы на неё?
2. вообще, зачем указатель типа округления передавать в виде строки? перечисление будет понятнее и существенно дешевле.
3. man strstr -> постарайтесь не использовать такие имена.
4. во избежании путаницы, криво разводимой через this->h и иже с ними, все-таки не стоит перекрывать имена членов структуры локальными переменными. и читается плохо и легко внести ошибку из-за невнимательности.
5. s/stringstream/ostringstream. вы же из него не читаете, правда?
6. как уже было сказано, подобные операторы реализовывать в виде inline несколько расточительно :)
7. #include <cstdlib>
...
99. посмотреть, как похожий конкретный класс реализован в Страуструпе :)