Ошибка Е1776 на функцию нельзя ссылаться, так как эта функция удалена Visual Studio 2019

Здравствуйте у меня возникает такая ошибка мой код

#include <iostream>
#include<string>
using namespace std;


class prog {
private:
const int ID = 7548;
string fio;
public:
prog() {
    fio = "undefined";
}
prog(string fio) {
    this->fio = fio;
}
void SET(int& id) {
    id = ID;
}
};

int main()
{
string fio = "name";
prog A[10];

A[1] = prog(fio);
}

И ругается на данную строку кода A[1] = prog(fio); но если я уберу свою константу ID то все работает как эту ошибку исправить ?


Ответы (1 шт):

Автор решения: goldstar_labs

Когда вы добавляете в класс константный член, то компилятор не может сгенерировать оператор присваивания по умолчанию, т.к. константе нельзя присвоить.

Оператор присваивания используется тут:

A[1] = prog(fio);

Решение - переопределить оператор присваивания вручную:

prog& operator=(const prog& other)
{
    if (this != &other)
    {
        fio = other.fio;
    }
    return *this;
}
→ Ссылка