gpt4 book ai didi

c++ - 对于(自动 e : xxx) conflict with constructor

转载 作者:行者123 更新时间:2023-11-28 00:52:36 26 4
gpt4 key购买 nike

我定义了一个类“eventZone”,用于我的类“配置”

class configuration { ... QMap<QString, eventZone> zones ... }

直到最近我成功地使用了类似 saw 的 for 循环

for(eventZone evz : config.zone.values()) { ... }

但是这不起作用,因为我为 eventZone 实现了一个复制构造函数(需要序列化它并能够保存配置)

我得到的错误是

/home/.../zonedisplay.cpp:43: erreur : no matching function for call to 'eventZone::eventZone(eventZone&)'

我的新构造函数有类型:

explicit eventZone(const eventZone &cpy);

如何让这两者共存?

最佳答案

没有理由把explicit放在这里。 explicit 的工作是防止隐式转换,但您不转换 - 您只是复制。去掉它。只有参数类型与类类型本身不同的单参数构造函数才需要它。

无论如何,C++ 中的惯用法是获取引用(除非您明确需要拷贝),这也适用于基于范围的 for 循环:

for(auto const& e : config.zone.values())
// do whatever with 'e'

关于c++ - 对于(自动 e : xxx) conflict with constructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13275106/

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