У меня есть класс с членом, который не изменяется методами класса, поэтому я пометил его как const
. Моя проблема в том, что я использовал оператор присваивания по умолчанию, как конструктор копирования, чтобы избежать множественных объявлений. Но в этом случае оператор присваивания не генерируется автоматически, поэтому я получаю некоторые ошибки компилятора:
Функция 'operator =' недоступна
. Похоже, что в реальной жизни нет сценария, в котором можно было бы использовать члены класса const (например, видели ли вы какой-либо член const в коде STL?).
Есть ли способ исправить это, кроме удаления const
?
РЕДАКТИРОВАТЬ : некоторый код
class A
{
public :
const int size;
A(const char* str) : size(strlen(str)) {}
A() : size(0) {}
};
A create(const char* param)
{
return A(param);
}
void myMethod()
{
A a;
a = create("abcdef");
// do something
a = create("xyz");
// do something
}