Использование удаленных функций в С++

Вот класс, который я создал:

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 &) '"

теперь я знаю, что компилятор должен предоставить мне оператор присваивания по умолчанию, и мой вопрос: почему компилятор ссылается на его оператор присваивания по умолчанию в качестве удаленной функции? и как я могу исправить это, не назначая все функции элементов данных вручную?

Спасибо большое! Gal

Ответ 1

Потому что у вас есть члены const. Они не могут быть назначены, поэтому компилятор не может предоставить оператор присваивания.