gpt4 book ai didi

c++ - 自动初始化和 const 正确性

转载 作者:太空狗 更新时间:2023-10-29 21:39:11 26 4
gpt4 key购买 nike

我有一个自定义迭代器实现(它迭代数据库查询结果,但这与此无关)。它在概念上有两组函数:get 类型函数,它从当前项目(当前行)返回一个值,以及 setup 类型函数(在我的例子中是 binds),它在开始迭代之前设置迭代器,因此新的迭代器实例实际上还没有指向第一个项目。还有一个 reset 函数可以使迭代器无效并准备好进行不同的设置。

当其中一个 get 函数被调用时,它首先检查迭代器是否仍然是新的或已被重置(有效地指向 begin()-1)和如果是,则将其推进到第一项。 get 函数将(应该)是 const,除了有条件的第一个进步阻止了这一点。

我应该:

  1. 将它们声明为 const 并为 isReset 标志放入一个 mutable,或者
  2. 保持原样,并接受这样一个事实,即在后台初始化对象使其成为非const,或者
  3. 用检查初始化状态代替自初始化,让用户在调用任何 get 函数之前调用一次 operator++?<

最佳答案

您的迭代器有状态(即底层数据是否可用),“get”函数会改变该状态。所以这使得它就像任何其他迭代器一样。 “get”函数不应该是常量。顺便说一句,与其调用你的函数“get”,不如让迭代器具有与标准库迭代器相同的接口(interface)——这样你就可以在上面使用标准算法了。因此,请使用 operator*() 和 operator++() 等函数。

关于c++ - 自动初始化和 const 正确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33587458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com