![]() |
1
4
我不知道您为什么不想公开集合本身,但如果是因为您想确保集合的内容不能在外部进行更改
|
![]() |
2
4
原因在于
我在您的设计中看到的一个问题是,您的函数的命名类似于访问器(getsuchandsu),但它们也修改了对象的内部状态。(
您可以尝试使用一些返回迭代器的成员函数(a
您可以返回集合的迭代器类型,或者如果您想要更多的控制或封装,您可以实现自己的迭代器类来包装集合的迭代器。 |
![]() |
3
2
要防止公开set::iterator(不向用户承诺超出需要的内容),可以创建包装:
因此,您将摆脱内部迭代器(因为只有一个迭代器是非常有限的),并且能够在粒子迭代器上使用STL的算法。 另外,Boost::Iterator_Facade在这里可能很有用… |
![]() |
4
1
问题是你到底想在这里完成什么。现在,你的课似乎(至少对我来说)弊大于利——这使得处理集合内容变得更困难而不是更容易。
我会研究粒子,并找出它是否能提供一些除了存储/访问一堆细胞之外有意义的东西。如果它真的只是一个简单的容器,那么你会更好地使用
现在,你的
|
![]() |
5
0
你的表演除了三个盖茨特之外什么都不做。通过使使用这些getter的操作成为粒子类的一部分来封装集合,那么您根本不需要getter:voila,封装的。 |
![]() |
6
0
|
![]() |
AstralHex · 矩阵乘法代码工作不正常 6 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 6 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 6 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 6 月前 |