У меня есть 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
необработанный произвольный тип класса. Какие-либо предложения?