Как распечатать объект неизвестного типа

У меня есть templatized контейнерный класс в C++, который подобен станд.:: карта (это - в основном ориентированная на многопотоковое исполнение обертка вокруг станд.:: карта). Я хотел бы записать функцию членства, которая выводит информацию о записях в карте. Очевидно, однако, я не знаю тип объектов в карте или их ключах. Цель состоит в том, чтобы смочь обработать основные типы (целые числа, строки) и также некоторые определенные типы классов, которыми я особенно интересуюсь. Для любого другого класса я хотел бы, по крайней мере, скомпилировать и предпочтительно сделать что-то несколько интеллектуальное, такое как печать адрес объекта. Мой подход до сих пор является аналогичным следующему (отметьте, я на самом деле не скомпилировал это или что-либо...):

template<typename Index, typename Entry>
class ThreadSafeMap
{
    std::map<Index, Entry> storageMap;
    ...
    dumpKeys()
    {
        for(std::map<Index, Entry>::iterator it = storageMap.begin();
            it != storageMap.end();
            ++it)
        {
            std::cout << it->first << " => " << it->second << endl;
        }
    }
    ...
}

Это работает на основные типы. Я могу также записать пользовательские потоковые функции вставки для обработки определенных классов, которыми я интересуюсь. Однако я не могу выяснить хороший способ обработать случай по умолчанию где Index и/или Entry необработанный произвольный тип класса. Какие-либо предложения?

5
задан Georg Fritzsche 31 July 2010 в 19:13
поделиться