У меня есть класс с std :: map указателей в качестве члена.Теперь я хотел бы показать этот элемент только для чтения: изменение не разрешено ни для карты, ни для объектов, на которые указывают.Внутренне мне нужно, чтобы эти указатели были неконстантными, и я хочу представить их как const.
У меня есть решение, которое компилируется по крайней мере, но я хотел бы знать, есть ли какие-то скрытые проблемы, которые яЯ столкнусь с этим.
class A
{
public:
const std::map<int, const float*>& GetMap() const { return *(reinterpret_cast< const std::map<int, const float*>* >( &m_Map)); }
private:
std::map<int, float*> m_Map;
};
Есть возможная проблема, о которой я могу подумать: если внутреннее расположение std :: map отличается для карт указателей и карт указателей const, то это вызовет уродливостьошибок.Но я не могу придумать ни одной разумной причины, почему это так.У кого-нибудь есть идеи?
Чтобы уточнить: я знаю, что это хак, и есть более безопасные решения (например, отдельные функции доступа).Мне просто интересно, сломается ли это сразу из-за некоторой части информации, которую я пропускаю.