#include <memory>
class A
{
public:
A()
{
}
A( const A&& rhs )
{
a = std::move( rhs.a );
}
private:
std::unique_ptr<int> a;
};
Run Code Online (Sandbox Code Playgroud)
此代码将无法使用g ++ 4.8.4进行编译,并引发以下错误:
error: use of deleted function ‘std::unique_ptr<_Tp, _Dp>& std::unique_ptr<_Tp, _Dp>
::operator=(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = int; _Dp = std::default_de
lete<int>]’
a = std::move( rhs.a );
^
Run Code Online (Sandbox Code Playgroud)
据我所知,unique_ptr的复制构造函数和复制赋值构造函数已被删除,无法调用,但我想std::move
在这里使用我会调用移动赋值构造函数.官方文档甚至显示了这种类型的任务正在完成.
我的代码中有什么问题我没看到?
我对 Rust 相当陌生,无法解决这个令人困惑的错误。
我只是想匹配aOption
的get
函数返回的 a HashMap
。如果返回一个值,我想增加它,否则我想向地图添加一个新元素。
这是代码:
let mut map = HashMap::new();
map.insert("a", 0);
let a = "a";
match map.get(&a) {
Some(count) => *count += 1,
None => map.insert(a, 0),
}
Run Code Online (Sandbox Code Playgroud)
由此产生的错误:
let mut map = HashMap::new();
map.insert("a", 0);
let a = "a";
match map.get(&a) {
Some(count) => *count += 1,
None => map.insert(a, 0),
}
Run Code Online (Sandbox Code Playgroud)
我真的不知道该编译器抱怨什么类型的约在这里,因为这两个Some
和None
是同一枚举类型的两个组成部分。谁能解释编译器对我的代码有什么问题?