我的类主要是容器的前端,我应该公开这个事实吗

My class is mostly a front for a container, should I expose this fact?

本文关键字:我应该 事实 前端 我的      更新时间:2023-10-16

在我的设计中,我有一个类,它主要是std::vector<OtherClass>的前端。在类接口中,我应该向任何调用方移交一个std::iterator,移交对整个vector的引用,还是提供一组函数来访问我的vector的内容?或者完全以不同的方式对待它?

更多信息:容器中的元素将在初始化期间设置,并且在程序正常运行时不会添加到。我的类的客户端通常会进行查询并修改OtherClass元素的状态,尽管不是以时间关键的方式。

您应该创建函数来在内部修改向量。原因如下:

根据编译器的不同,您可能正在运行不同版本的STL(标准模板库),这可能会导致意外问题,假设它们可能会改变std::vector的操作方式,从您在库的旧版本(或新版本)中构建它并发送它开始。

然而,我猜这不是一个库,也不是一个可能与另一个编译器一起使用的项目。只要使用相同版本的STL运行和编译,就可以安全地向向量发送引用或指针。