【发布时间】:2020-08-09 15:41:57
【问题描述】:
使用以下代码,我遇到了一个问题。
ABC.h
namespace abcd
{
class ABC
{
public:
ABC() = delete;
ABC(const std::string& filename);
virtual ~ABC();
ABC(const ABC&) = delete;
ABC(ABC&&) = default;
};
}
XYZ.h
using namespace abcd;
class XYZ
{
public:
void func();
private:
ABC obj;
ABC maskfilename(std::string filename);
};
XYZ.cpp
XYZ::func()
{
obj = maskfilename("abcd.txt"); //Error
}
abcd::ABC XYZ::maskfilename(string filename)
{
abcd::ABC ret;
// blah blah...
return ret;
}
错误:
"abcd::ABC::operator=(const abcd::ABC &)"(隐式声明)不能被引用——它是一个被删除的函数
我知道它只是移动构造函数类 (ABC)。
使用它的正确方法是什么?我想在XYZ 类中保留maskfilename() 的返回值,以便在XYZ 类的其他函数中使用。
我该如何解决这个错误?
【问题讨论】:
标签: c++ c++11 constructor