Да, это правильный дизайн. Клиенты могут полагаться на значения, отличные от NULL.
В связанной заметке какой-то другой класс отвечает за управление временем жизни mapping_item's?
Указатели и владение легко приводят к утечкам памяти или еще хуже. Возможно, вы захотите решить, нужно ли вам на самом деле хранить указатели, или вы можете вместо этого копировать mapping_item, чтобы избежать утечек памяти. Однако указатели необходимы, если вам нужно управлять подклассами mapping_item. Указатели желательны, если экземпляры велики или их необходимо использовать совместно.
Если вам действительно нужны указатели, рассмотрите возможность использования boost :: shared_ptr <> вместо необработанных указателей, как внутри вашего класса, так и в качестве типов параметров, например. функция add ().