gpt4 book ai didi

C++ 返回具有常量成员变量的对象——赋值运算符被隐式删除

转载 作者:太空宇宙 更新时间:2023-11-04 13:25:32 27 4
gpt4 key购买 nike

struct MyStruct {
const int a, b;
MyStruct(int a, int b): a(a), b(b) {}
}

map<int, MyStruct> m;

m[2] = MyStruct(3, 4); // this would fail. Of course I can use m.insert( .... )
MyStruct t = m[2]; // this would not compile, because there is no assignment operator.

我会得到下面的编译错误。

[assignment operator] is implicitly deleted because the default definition would be ill-formed:

如何解决这个问题?我想有常量成员变量,避免以后意外修改

最佳答案

有一个自动生成的复制构造函数,相当于

MyStruct(MyStruct &s): a(s.a), b(s.b) {}

使用它来创建拷贝:

MyStruct t(m[2]);

关于C++ 返回具有常量成员变量的对象——赋值运算符被隐式删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33505425/

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