将std :: list公开为只读

Tim*_*nes 8 c++ const stdlist

我有一个类,其中包含一个std :: list.我想公开这个列表,但只是以这样的方式,它包含的结构和数据是只读的,但仍然可以与迭代器一起使用.

我让它'工作'atm的方式是返回列表的副本.这使我的班级"安全",但当然没有阻止调用者修改他们的列表副本而没有获得正确的数据.

有没有更好的办法?

Jar*_*Par 16

为什么不返回const std::list&

  • 因为暴露列表就这样暴露了实现细节.当你意识到并决定使用向量时,你*不要*想要代码,这取决于它是一个列表. (9认同)

Jer*_*fin 9

而不是暴露列表本身(根本不暴露)只是将const_iterators 暴露给它的开头和结尾.看到cbegin()cend()帮助这样做......