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

标签 c++ abstraction standard-library

在我的设计中,我有一个类主要是 std::vector<OtherClass> 的前端.我是否应该在我的类界面中将 std::iterator 交给任何调用者? , 交个引用全vector或者提供一组函数来访问我的 vector 的内容?或者完全不同地处理它?<​​/p>

更多信息:容器中的元素会在初始化时设置,程序正常运行时不会添加。我类的客户会经常查询和修改 OtherClass 的状态元素,尽管不是时间紧迫的方式。

最佳答案

您应该创建在内部修改 vector 的函数。原因如下:

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

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

关于c++ - 我的类主要是容器的前端,我应该公开这个事实吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25731261/

相关文章:

c# - 适配包含 ref 参数的 C# 事件

java - 使用字节码生成的框架是否会造成抽象漏洞?

c++ - 为什么 ofstream 需要冲洗?

python - 如何在 Python 中按名称引用整数

c++ - 将结构放入匿名命名空间有什么作用?

c++ - 在 perl 中调试由 SWIG 包装的共享库

c++ - 我们可以根据引用参数类型重载构造函数吗?

c++ - 在 C++ 中使用 vector 数组的 vector

abstraction - 什么是抽象?

java - 是否有未同步的 java.util.Stack?