这是我创建的一个类:
class A{
private:
// some private data members:
// 2 const integers
// 2 integers
// 2 const strings
public:
// C'tor
// D'tor
void f(const A&);
}
在构造这个类的每个对象时,没有(明确的)动态分配,只有“原始”类型分配。 (我的意思是没有明确的动态分配,除了字符串类如何处理内存)。
当我尝试这个时:
void f(const A& item){
// do some thing
*this = item;
// do other stuff
}
我收到以下错误: “使用已删除的函数‘A& A::operator=(const A&)’”
现在我知道编译器应该为我提供一个默认的赋值运算符, 我的问题是:为什么编译器将它的默认赋值运算符称为已删除函数?以及如何在不手动分配所有数据成员函数的情况下解决这个问题?
非常感谢! 加尔
最佳答案
因为你有 const
成员。它们无法赋值给,因此编译器无法提供赋值运算符。
关于c++ - 在 C++ 中使用已删除的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17124780/