【发布时间】:2023-03-09 14:19:01
【问题描述】:
PanelItem 是一个没有复制构造函数的类 (=Deleted)。我使用QList<PanelItem> m_arrPanelItems 来存储它们。
当我调用QList::append(const T &value) 时,出现错误'PanelItem::PanelItem(const PanelItem &)': attempting to reference a deleted function。我认为它在函数内部调用了PanelItem::PanelItem(const PanelItem &)。
当我使用 range-for 时,错误再次出现。我在 range_declaration 中使用const auto&。所以我认为不会使用复制构造函数PanelItem::PanelItem(const PanelItem &)。
// QList<PanelItem> m_arrPanelItems
for (const auto& t_item : this->m_arrpPanelItems) {
// do something
}
为什么?
【问题讨论】:
-
您似乎一开始就说不能将它们添加到容器中,那么您要迭代的容器中有什么?
-
@RetiredNinja 也许这些项目被放置/移动到列表中而不是复制?谁知道。但是基于范围的 for 循环在使用引用变量时不应该调用复制语义。如果是的话,有什么东西坏了