我为不可复制的类创建了这个基类:
class non_copyable
{
public:
non_copyable(const non_copyable&) = delete;
non_copyable& operator=(const non_copyable&) = delete;
virtual ~non_copyable() = default;
protected:
non_copyable() = default;
};
Run Code Online (Sandbox Code Playgroud)
然后我创建了这个派生类:
class manager
: public non_copyable
{
public:
manager()
{
}
std::string s;
};
Run Code Online (Sandbox Code Playgroud)
我能够创建一个类的实例并返回如下:
manager get()
{
return manager();
}
Run Code Online (Sandbox Code Playgroud)
我认为这是不可能的,因为删除了复制构造函数并删除了隐式生成的移动构造函数,因为存在用户定义(已删除)的复制构造函数.
此代码使用MinGW-64 7.2编译,但不与MSVC 2017编译,并产生以下消息:
函数"manager :: operator =(const manager&)throw()"(隐式声明)无法引用 - 它是一个已删除的函数
这是编译器的问题,C++设计允许还是我做错了什么?
我正在尝试将目录压缩到tar.gz文件中,并在使用 Rust 后将其解压缩。我正在使用板条箱tar = "0.4.35"和flate2 = "1.0.20". 我在 Windows 上。
我的代码与此处的示例几乎相同。
let tar = File::create("a.tar.gz").unwrap();
let enc = GzEncoder::new(tar, Compression::default());
let mut a = tar::Builder::new(enc);
a.append_dir_all("", "in").unwrap();
Run Code Online (Sandbox Code Playgroud)
let tar = File::open("a.tar.gz").unwrap();
let dec = GzDecoder::new(tar);
let mut a = Archive::new(dec);
a.unpack("out").unwrap();
Run Code Online (Sandbox Code Playgroud)
解压时总是报错:
thread 'main' panicked at 'called Result::unwrap() on an Errvalue: Custom { kind: InvalidInput, error: TarError { desc: "failed to iterate over archive", io: Custom { kind: InvalidInput, error: "invalid gzip …