我的类主要是容器的前端,我应该公开这个事实吗
My class is mostly a front for a container, should I expose this fact?
在我的设计中,我有一个类,它主要是std::vector<OtherClass>
的前端。在类接口中,我应该向任何调用方移交一个std::iterator
,移交对整个vector
的引用,还是提供一组函数来访问我的vector
的内容?或者完全以不同的方式对待它?
更多信息:容器中的元素将在初始化期间设置,并且在程序正常运行时不会添加到。我的类的客户端通常会进行查询并修改OtherClass
元素的状态,尽管不是以时间关键的方式。
您应该创建函数来在内部修改向量。原因如下:
根据编译器的不同,您可能正在运行不同版本的STL(标准模板库),这可能会导致意外问题,假设它们可能会改变std::vector的操作方式,从您在库的旧版本(或新版本)中构建它并发送它开始。
然而,我猜这不是一个库,也不是一个可能与另一个编译器一起使用的项目。只要使用相同版本的STL运行和编译,就可以安全地向向量发送引用或指针。
相关文章:
- 我应该使用什么来代替void作为变体中的替代类型之一
- boost::asio::steady_timer()与sleep()我应该使用哪一个
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 我应该删除矢量<short>吗?
- 我应该如何修改此代码以使用给定字符串中的字母打印菱形图案
- 我应该在锁定TBitmap画布后解锁它吗
- 为什么我应该在异常处理中使用std::cerr而不是std::cout
- 我应该避免多重实现继承吗
- 为了方便起见,我应该避免公开私有字段变量吗
- 我收到同义重复编译器错误。我应该如何修复"类型"X"的参数与类型"X"的参数不兼容?
- 违反const正确性:我应该现实地期待什么问题
- 我应该如何表示我拥有的连续元素序列?
- 我应该将除 .cpp 以外的其他文件添加到 git 中吗?
- 我应该如何从 stdin C++ 中读取可变长度的格式字符串?
- 我有一个对象,它将在整个程序的持续时间内实例化,但一个类成员不会,我应该动态分配它吗?
- 我应该如何捕捉out_of_range异常?
- 我应该声明所有不抛出 noexexcept 的成员/函数吗?
- OpenCV 我应该使用智能指针来防止内存泄漏吗?
- 我的类主要是容器的前端,我应该公开这个事实吗