我有一个带有std ::指针映射的类作为成员.现在,我想以只读方式公开该成员:既不允许修改地图,也不允许修改指向的对象.在内部我需要那些非const的指针,我想将它们公开为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;
};
Run Code Online (Sandbox Code Playgroud)
我可以想到一个可能的问题:如果std :: map的内部布局对于指针映射和const指针映射是不同的,那么这将导致丑陋的错误.但我想不出任何理智的原因.有人有什么想法吗?
澄清:我知道这是一个黑客,并且有更安全的解决方案(如单独的访问器功能).我只是想知道这是否会因为我遗漏的一些信息而立即破裂.