gpt4 book ai didi

c++ - 使用 std::deque::erase 类的 const 成员编译错误

转载 作者:搜寻专家 更新时间:2023-10-31 00:31:32 25 4
gpt4 key购买 nike

我在这里遇到编译错误,我不知道代码有什么问题。我正在使用 g++ 4.9.2。

#include<iostream>
#include<deque>

using std::string;
using std::deque;

class Dummy {
public:
virtual ~Dummy(){};
Dummy():ID_("00") {};
private:

const string ID_;
};

int main(){
{
deque <Dummy> waiter;
waiter.push_back(Dummy());
waiter.erase( waiter.begin() );
}
return 0;
}

编辑:我知道删除 const 会删除编译错误,但我不知道为什么。无论如何,我需要这个常量。

最佳答案

std::deque::erase期望元素的类型应该是 MoveAssignable :

Type requirements

T must meet the requirements of MoveAssignable.

并且 Dummy 类有一个常量成员 const string ID_;,这使得它不能被默认赋值运算符赋值。

您可以使 ID_ 成为非常量成员,或提供您自己的赋值运算符以使其可赋值。例如

Dummy& operator=(const Dummy&) { /* do nothing */ }

LIVE

关于c++ - 使用 std::deque::erase 类的 const 成员编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33888571/

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